Linq groupby和sum

时间:2013-10-03 14:30:25

标签: c# linq group-by

基本上我有一个有两个属性的课程 - ParentProductNumberOfOrders。我想选择不同的父产品,按订单总数排序,所以我使用了以下Linq:

var list = List.GroupBy(t => t.ParentProduct)
               .Select(group => new { Product = group.Key, NumberOfOrders = group.Sum(t => t.NumberOfOrders) })
               .OrderBy(o => o.NumberOfOrders)
                     .Select(o => o.Product);

其中List是所有子产品的清单 t是包含订单数量和父产品的子产品 o是创建的新对象

我想知道是否有更好的方法来获得按订单总数排序的不同父产品列表,因为上面似乎做了很多选择。

1 个答案:

答案 0 :(得分:5)

您可以删除中间选择,然后按总和对组进行排序,然后选择产品。

var list = List.GroupBy(t => t.ParentProduct)
               .OrderBy(group => group.Sum(t => t.NumberOfOrders))
               .Select(group => group.Key);