得到一个LINQ查询两列的总和不进行分组(Get sum of two columns in one

2019-06-23 19:27发布

我想总结一下表的三个不同领域中的一个查询。 我想一个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)
}

有什么建议? 谢谢你的时间。

Answer 1:

事实证明,在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



Answer 2:

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);


文章来源: Get sum of two columns in one LINQ query without grouping