对数组中的重复对象求和

时间:2018-10-21 20:45:45

标签: c# arrays linq

我有一个带有CustomerId,ProductId和Count(所有整数)的未排序对象数组 我想结合CustomerId和ProductId匹配的记录,对计数求和。

例如:

CId  PId  Cnt
1    100  5
1    100  1
2    100  7

所需的输出:

CId  PId  Cnt
1    100  6
2    100  7

如您所见,CId 1和PId 100的两条记录已合并,并且计数已求和。

这可以用LINQ完成吗? 我知道可以使用循环来完成,但我希望有一种更优雅的方式

1 个答案:

答案 0 :(得分:5)

这里我假设类名是Item

var result = array.GroupBy(x => new { x.CId, x.PId })
   .Select(g => new Item { CId = g.Key.CId, PId = g.Key.PId, Cnt = g.Sum(x => x.Cnt) });

这里是Live Demo