我有一个包含此列的表格:
Code //int
Type //int
Point //int
我希望有查询来完成这项工作:
根据Code
和Type
执行选择并将点的总和添加到Point
。我想我无法正确解释我的想法,因此我会在下面向您展示我想要的结果。
我的表:
Code Type Point Date
1 1 10 someDate
1 1 20 someDate
1 2 10 someDate
1 1 30 someDate
1 2 10 someDate
2 1 30 someDate
2 2 20 someDate
2 1 10 someDate
1 2 10 someDate
1 1 10 someDate
3 2 20 someDate
我想要的结果:
row[0] : Code:1, Type:1, Point:70,
row[1] : Code:1, Type:2, Point:30,
row[2] : Code:2, Type:1, Point:40,
row[3] : Code:2, Type:2, Point:20,
row[4] : Code:3, Type:2, Point:20,
更新 如果我想要这样的结果什么是最好的查询?
row[0] : Code:1, pointType1:70, pointType2:30,
row[0] : Code:2, pointType1:40, pointType2:20,
row[0] : Code:3, pointType1:0, pointType2:20,
答案 0 :(得分:3)
您可以对列表中的Code
和Type
属性进行分组,然后使用分组结果中的Point
属性的总和来预测两个键,如:
var result = list.GroupBy(x=> new { x.Code, x.Type})
.Select(g=>
new {
Code = g.Key.Code,
Type= g.Key.Type,
Point = g.Sum(x=>x.Point)
})
.ToList();
在问题示例输出更新后,以下将给出预期结果:
var result = list.GroupBy(x=> x.Code)
.Select(g=>
new {
Code = g.Key.Code,
PointType1= g.Where(x=>x.Type==1)
.Sum(x=>x.Point)
Key.Type,
PointType2 = g.Where(x=>x.Type==2)
.Sum(x=>x.Point)
})
.ToList();