假设我有一个来自数据库的列表,如下所示:
List<Item> list =
{
new Item
{
TypeID = 2,
Count = 5
},
new Item
{
TypeID = 2,
Count = 7
},
new Item
{
TypeID = 5,
Count = 2
}
};
Run Code Online (Sandbox Code Playgroud)
我想用相同的方法总结所有元素,TypeID以便我有一个仅包含两个元素的最终结果列表:
List<Item> list =
{
new Item
{
TypeID = 2,
Count = 12
},
new Item
{
TypeID = 5,
Count = 2
}
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用LINQ实现这个目标?
干杯
西蒙
list.GroupBy(x=>x.TypeID)
.Select(x=>new Item(){TypeID=x.Key,Count=x.Sum(y=>y.Count) })
.ToList();
Run Code Online (Sandbox Code Playgroud)
您可以先使用GroupBy分组TypeID,然后Sum对每个组进行分组:
var result = list.GroupBy(x => x.TypeID)
.Select(g => new Item() {
TypeId = g.Key,
Count = g.Sum(x => x.Count)
})
.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |