2013-10-03 104 views
1

基本上我有一个类有两个proptilies - ParentProductNumberOfOrders。我要选择不同的上代产品,通过订单总数量排序,所以我用以下的Linq:Linq groupby和

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

在我看来,这是更好的方法。 – Flea777

+0

我不明白你的'数据结构'好,你想**选择不同的父**,那么如果你有两个相同的'ParentProduct'具有不同的'NumberOfOrders',你选择它们之间的哪一个计算'NumberOfOrders'的总和? –

+0

@KingKing因为我是由父母分组的,应该处理它的不同部分,我只是想知道,如果我可以得到由订单总数(但没有NumberOfOrders)订购的父母名单,而无需做2选 – Pete

回答

5

您可以删除中间的选择,只需按总数排序组,然后选择产品。

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

完美,这就是我所追求的。谢谢! – Pete