C# 我应该如何在使用linq的模型列表的不同值上使用GROUPBY和sum

C# 我应该如何在使用linq的模型列表的不同值上使用GROUPBY和sum,c#,linq,group-by,sum,C#,Linq,Group By,Sum,我有一份期末考,是我的模范班的名单 List<ItemsConsumed> FinalCons = new List<ItemsConsumed>(); 我也试图从中得到所需的结果,但这也没有给我正确的结果 var itemCon = FinalCons.GroupBy(ic => new { ic.PersonalID}).Select(ic => new ItemsConsumed { Personal

我有一份期末考,是我的模范班的名单

List<ItemsConsumed> FinalCons = new List<ItemsConsumed>(); 
我也试图从中得到所需的结果,但这也没有给我正确的结果

var itemCon = FinalCons.GroupBy(ic => new { ic.PersonalID}).Select(ic => new ItemsConsumed
           {
              PersonalID=ic.Key.PersonalID,
               ItemID = ic.FirstOrDefault().ItemID,
               Consumption=ic.Sum(c=>c.Qty)
           }).ToList();
根据
PersonalID
ItemID
对您的项目进行分组

<Personal ID, Item ID, Consumption>

<1 , 4 , 1>        <1 , 4 , 2>         
<1 , 4 , 1>        <1 , 5 , 1>         
<1 , 5 , 1>        <2 , 4 , 1>         
<2 , 4 , 1>        <2 , 5 , 2>        
<2 , 5 , 2>                      

应该是正确的。除了您的
,我看不出第一个代码有问题。Select()
s应该有一个
FirstOrDefault()
当我将第一个ItemComSummed的内容添加到列表中时,它向我显示了一个错误“无法隐式地将类型'System.Collections.Generic.IEnumerable'转换为'int'。因此,我使用FirstOrDefault()为itemCon编写代码。但没有给出正确的结果。它只为每个ID提供两行。但我还需要它按itemID进行筛选。现在不知道如何为此编写linq查询。
<Personal ID, Item ID, Consumption>

<1 , 4 , 1>        <1 , 4 , 2>         
<1 , 4 , 1>        <1 , 5 , 1>         
<1 , 5 , 1>        <2 , 4 , 1>         
<2 , 4 , 1>        <2 , 5 , 2>        
<2 , 5 , 2>                      
var itemConsumed = FinalCons
                   .GroupBy(x => new { 
                               x.PersonalID, 
                               x.ItemID 
                   }) //group by both PersonalID and ItemID
                   .Select(x => new 
                   { 
                       PersonalID= x.Key.PersonalID, 
                       ItemID = x.Key.ItemID,
                       Consumption = x.Sum(a => a.Consumption)
                   })
                   .OrderBy(x => x.PersonalID).ThenBy(y=>y.ItemID);
                     //order by Personal ID and then by Item ID