private static void GroupBranchOffers() { var branchOffers = new LoyaltyCardBranchOffer[] { new LoyaltyCardBranchOffer(1, 1, 10, 50, 20, new[] { 1, 2 }), new LoyaltyCardBranchOffer(2, 1, 10, 50, 21, new[] { 3 }), new LoyaltyCardBranchOffer(3, 1, 10, 60, 20, new[] { 1, 2 }), new LoyaltyCardBranchOffer(4, 2, 11, 70, 25, new[] { 1, 2 }), new LoyaltyCardBranchOffer(4, 2, 11, 80, 25, new[] { 1, 2 }) }; var grouped = branchOffers.GroupBy(c => new { Card = c.CardId, Merchant = c.MerchantId, Branch = c.BranchId }) .Select(g => new { Card = g.Key.Card, Merchant = g.Key.Merchant, Branch = g.Key.Branch, Offers = g.Select(i => i.OfferId).ToArray(), Categories = g.SelectMany(i => i.Categories).ToArray() }).ToArray(); }
private static void GroupBranchOffers() { var branchOffers = new LoyaltyCardBranchOffer[] { new LoyaltyCardBranchOffer(1, 1, 10, 50, 20, new[] { 1, 2 }), new LoyaltyCardBranchOffer(2, 1, 10, 50, 21, new[] { 3 }), new LoyaltyCardBranchOffer(3, 1, 10, 60, 20, new[] { 1, 2 }), new LoyaltyCardBranchOffer(4, 2, 11, 70, 25, new[] { 1, 2 }), new LoyaltyCardBranchOffer(4, 2, 11, 80, 25, new[] { 1, 2 }) }; var grouped = branchOffers.GroupBy(c => new { Card = c.CardId, Merchant = c.MerchantId, Branch = c.BranchId }) .Select(g => new { Card = g.Key.Card, Merchant = g.Key.Merchant, Branch = g.Key.Branch, Offers = g.Select(i => i.OfferId).ToArray(), Categories = g.SelectMany(i => i.Categories).ToArray() }).ToArray(); }