得到多个列的和
本文关键字: | 更新日期: 2023-09-27 18:19:24
我有三列,我试图得到每一列的和返回。我可以为一列设置:
var data = db.Test.Sum(x => x.Column1);
我不知道如何得到三列的和。我试着选择这些值并将它们相加,但这不起作用。
var data = db.Test.Select(x=> new { x.Column1, x.Column3, x.Column3}).Sum();
我要分别计算每一列的结果,而不是所有列的和。
var sums = db.Tests
.GroupBy(x => true)
.Select(x => new
{
SumColumn1 = x.Sum(y => y.Column1),
SumColumn2 = x.Sum(y => y.Column2),
SumColumn3 = x.Sum(y => y.Column3)
});
GroupBy(x => true)
语句将所有项放到一个单独的组中。Select
语句允许对每个组进行操作。在本例中,唯一的组是允许我们返回每个列的Sum
的所有项的组。
要获得三列的和,您需要将序列投影到该列,并获得三次不同时间的和:
var sum1 = db.Test.Sum(x => x.Column1);
var sum2 = db.Test.Sum(x => x.Column2);
var sum3 = db.Test.Sum(x => x.Column3);
要在单个DB请求中执行此操作,您可以在另一个查询范围内执行这些投影:
var sums = db.Test.Take(1)
.Select(unused => new
{
sum1 = db.Test.Sum(x => x.Column1),
sum2 = db.Test.Sum(x => x.Column2),
sum3 = db.Test.Sum(x => x.Column3),
})
.First();