基本上我有一个有两个属性的课程 - ParentProduct
和NumberOfOrders
。我想选择不同的父产品,按订单总数排序,所以我使用了以下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
是创建的新对象
我想知道是否有更好的方法来获得按订单总数排序的不同父产品列表,因为上面似乎做了很多选择。
答案 0 :(得分:5)
您可以删除中间选择,然后按总和对组进行排序,然后选择产品。
var list = List.GroupBy(t => t.ParentProduct)
.OrderBy(group => group.Sum(t => t.NumberOfOrders))
.Select(group => group.Key);