IEnumerable GroupBy Part 2

These are all the good options I came up with. I prefer option 2.

                       var option1 = list.GroupBy(orderDetail => new { orderDetail.OrderNumber, orderDetail.ItemNumber, orderDetail.LineNumber })
                .Select(orderDetailGrouped => new OrderDetail(orderDetailGrouped.First(), orderDetailGrouped.Sum(i => i.Quantity)));

var option2 = list.GroupBy(orderDetail => new { orderDetail.OrderNumber, orderDetail.ItemNumber, orderDetail.LineNumber })
                .Select(orderDetailGrouped =>
                {
                    var orderDetail = orderDetailGrouped.First();
                    orderDetail.Quantity = orderDetailGrouped.Sum(i => i.Quantity);
                    return orderDetail;
                });

var option3 = list.GroupBy(orderDetail => new { orderDetail.OrderNumber, orderDetail.ItemNumber, orderDetail.LineNumber })
             .Select(orderDetailGrouped => new OrderDetail
             {
                 OrderNumber = orderDetailGrouped.Key.OrderNumber,
                 ItemNumber =orderDetailGrouped.Key.ItemNumber,
                 LineNumber = orderDetailGrouped.Key.LineNumber,
                 Quantity = orderDetailGrouped.Sum(i => i.Quantity) 
            });
             
var option4 = list.GroupBy(orderDetail => new { orderDetail.OrderNumber, orderDetail.ItemNumber, orderDetail.LineNumber })
                .Select(orderDetailGrouped => new OrderDetail
                {                                       
                    OrderNumber = orderDetailGrouped.First().OrderNumber,
                    ItemNumber = orderDetailGrouped.First().ItemNumber,
                    LineNumber = orderDetailGrouped.First().LineNumber,
                    Quantity = orderDetailGrouped.Sum(s => s.Quantity)
                }) ;

Leave a comment