Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq groupby和sum_C#_Linq_Group By - Fatal编程技术网

C# Linq groupby和sum

C# Linq groupby和sum,c#,linq,group-by,C#,Linq,Group By,基本上,我有一个包含两个属性的类-ParentProduct和NumberOfOrders。我想选择不同的父产品,按订单总数排序,因此我使用了以下Linq: var list = List.GroupBy(t => t.ParentProduct) .Select(group => new { Product = group.Key, NumberOfOrders = group.Sum(t => t.NumberOfOrders) })

基本上,我有一个包含两个属性的类-
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
是否创建了新对象


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

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

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

您可以删除中间的select,只需按总和对组进行排序,然后选择乘积

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

在我看来,这似乎是更好的方法。我不理解您的
数据结构
好吧,您希望选择不同的父级,那么如果您有两个相同
父级产品
的条目,并且具有不同的
订单数
,该怎么办,你从他们中选择哪一个来计算NumberOfOrders之和?@KingKing因为我是按父母分组的,这应该能处理它的不同部分,我只是想知道我是否能得到一个按订单数之和排序的父母列表(但没有NumberOfOrders)不必进行2次选择在我看来这是更好的方法。我不理解您的
数据结构
好吧,您希望选择不同的父项,那么如果您有两个相同
父项产品
的条目,并且具有不同的
数量
,该怎么办,你从他们中选择哪一个来计算NumberOfOrders之和?@KingKing因为我是按父母分组的,这应该可以处理它的不同部分,我只是想知道我是否可以得到一个仅父母的列表,这些父母是按订单数之和排序的(但不包括NumberOfOrders),而不必做2个selectsPerfect,这就是我想要的。谢谢太好了,这就是我想要的。谢谢