我想总结一下表的三个不同领域中的一个查询。 我想一个LINQ相当于这个T-SQL的:
select sum(fld1), SUM(fld2), SUM(fld3) from MyTable where classID = 5
我发现无论是所有例子都使用一组由或为需要进行总结每场致电查询多次,一次。
我有现在这样的事情。 但我不希望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)
}
有什么建议? 谢谢你的时间。
事实证明,在LINQ到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)
}
(注意通过0的基团)
它不转化为SQL GROUP BY
,但SELECT
的多个SUM
期从一个子查询。 在执行计划方面,它甚至可能是相同的。
实体框架还创建了一个GROUP BY
,尽管由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);