use*_*358 11 linq entity-framework linq-to-sql
我想在一个查询中总结一个表的三个不同字段.我想要这个T-SQL的linq等价物:
select sum(fld1), SUM(fld2), SUM(fld3) from MyTable where classID = 5
Run Code Online (Sandbox Code Playgroud)
我找到的所有示例要么使用group by,要么多次调用查询,对于需要总结的每个字段一次.
我现在有类似的东西.但是我不想为它添加group by子句,因为它在T-SQL表单中不是必需的.
from a in MyTable
where a.classID == 5
group a by a.classID into g
select new
{
Sumfld1 = g.Sum(x => x.fld1 ),
Sumfld2 = g.Sum(x => x.fld2),
Sumfld3 = g.Sum(x => x.fld3)
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢你的时间.
Ger*_*old 12
事实证明,在linq-to-sql中你可以通过以下方式获得非常接近:
from a in MyTable
where a.classID == 5
group a by 0 into g
select new
{
Sumfld1 = g.Sum(x => x.fld1),
Sumfld2 = g.Sum(x => x.fld2),
Sumfld3 = g.Sum(x => x.fld3)
}
Run Code Online (Sandbox Code Playgroud)
(注意组为0)
它不会转换为sql GROUP BY,而是转换为子查询中SELECT的多个SUMs.就执行计划而言,它甚至可能是相同的.
实体框架仍然会创建一个GROUP BY,尽管如此0.
小智 0
var x = from a in MyTable
where a.classID == 5
select a;
int? Sumfld1 = x.Sum(y => y.fld1);
int? Sumfld2 = x.Sum(y => y.fld2);
int? Sumfld3 = x.Sum(y => y.fld3);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8784 次 |
| 最近记录: |