得到多个列的和

本文关键字: | 更新日期: 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();
相关文章:
  • 没有找到相关文章