C# 消除列表中的重复项并汇总“数量”字段

C# 消除列表中的重复项并汇总“数量”字段,c#,.net,list,linq,C#,.net,List,Linq,我有一个由ID和数量组成的列表。ID以不同的数量重复。我想删除重复的ID并添加数量。 例:ID1:4 ID2:5 ID1:3 我要这是ID1:7 ID2:5 我和林克试过了。我可以删除副本,但不能添加数量 List<PrintDetails> myList = printDetailsList .GroupBy(s => s.MasterID)

我有一个由ID和数量组成的列表。ID以不同的数量重复。我想删除重复的ID并添加数量。 例:ID1:4 ID2:5 ID1:3 我要这是ID1:7 ID2:5 我和林克试过了。我可以删除副本,但不能添加数量

    List<PrintDetails> myList = printDetailsList
                                             .GroupBy(s => s.MasterID)
                                             .Select(grp => grp.FirstOrDefault())
                                             .OrderBy(s => s.Quantity)
                                             .ToList();

你就快到了,你只需要返回一个新的对象和:

List<PrintDetails> myList = printDetailsList
    .GroupBy(s => s.MasterID)
    .Select(grp => new PrintDetails() { MasterID = grp.Key, Quantity = grp.Sum(s => s.Quantity) }) // create a new object with the Id and quantity by sum
    .OrderByDescending(s => s.Quantity) // based on the example in the question you actually want to order from highest quantity to lowest
    .ToList();
对列表进行分组时,将得到一个包含键的分组,该分组是项的可枚举项。因此,您可以使用键作为主ID,因为它就是主ID,然后使用可枚举项对数量求和

我还修复了您的OrderBy,因为它对于您的示例来说似乎是错误的


所以,您希望通过id获得聚合数量,而不是删除重复id?是的。。。。。。。。。。。。。