我有这样一张表:统计(id int,col1 int,col2 int,col3 int ...) 我想要获取col1值、col2值、col3值等的总和。 一个简单的SQL查询:
SELECT SUM([Col1]), SUM([Col2])
FROM [dbo].[Statistics]
但是在LINQ中:
var val1 = db.Statistics.Sum(x => x.Col1);
var val2 = db.Statistics.Sum(x => x.Col2);
var val3 = db.Statistics.Sum(x => x.Col3);
...
这种方法可以实现,但会在数据库上执行N个查询。我希望只执行一次。我找到的唯一方法是:
var result = db.Statistics.GroupBy(x => 1).Select(x => new
{
val1 = x.Sum(k => k.Col1),
val2 = x.Sum(k => k.Col2),
val3 = x.Sum(k => k.Col3),
});
它会生成一个复杂的查询。这正常吗?
更新 以下是两个执行计划: