C# LINQ中多个独立列上的和

C# LINQ中多个独立列上的和,c#,sql,linq,sum,C#,Sql,Linq,Sum,有人知道如何正确有效地求多个列的和吗 我有一个巨大的连接查询 db.myTable.Join(...) .Join(...) .Join(...) .Join(...) .Join(...) .Join(...) .Where(...) 我现在需要做的是将A、B、C和D列相加,然后计算E。 所以我有一个记录,里面有总数 我尝试使用GROUPBY和Select(x=>newmyclass{A=>x.}) 以下内容主要是低效的 myClass mine = new myClass{

有人知道如何正确有效地求多个列的和吗

我有一个巨大的连接查询

db.myTable.Join(...)
.Join(...)
.Join(...)
.Join(...)
.Join(...)
.Join(...)
.Where(...)
我现在需要做的是将A、B、C和D列相加,然后计算E。

所以我有一个记录,里面有总数

我尝试使用GROUPBY和
Select(x=>newmyclass{A=>x.})

以下内容主要是低效的

myClass mine = new myClass{ 
            Number = myList.GroupBy(x => x.u.ID).Count(),
            Area = myList.Sum(a => a.u.Area ?? 0),
            Rent = myList.Sum(a => a.r.Rent ?? 0)   ,
            ERV = myList.Sum(a => a.e.ERV ?? 0)
        };
以下是有效的,但仅对第一个分组求和

      myClass mine = (from p in myList
                            group p by p.u.ID into g
                            select  new myClass
                            { 
                                Number = g.Count(),
                            Area = g.Sum(a => a.u.Area ?? 0),
                            Rent = g.Sum(a => a.r.Rent ?? 0)   ,
                            ERV = g.Sum(a => a.e.ERV ?? 0)
        }).FirstOrDefault();

我认为您正在尝试使用单个记录中其他字段的未分组
Sum()
来获取数字字段的
Distinct Count()

var mine = (from x in (from p in mc 
                       group p by p.u.id into g1
                       select new { 
                             Number = g1.Count(),
                             Area = g1.Sum(a => a.u.Area??0),
                             Rent = g1.Sum(a => a.u.Rent??0),
                             ERV = g1.Sum(a => a.e.ERV ?? 0)
                       })
                    group x by 1 into g2
                    select new myClass {
                             Number = g2.Count(),
                             Area = g2.Sum(a => a.Area),
                             Rent = g2.Sum(a => a.Rent),
                             ERV = g2.Sum(a => a.ERV)
                    }).FirstOrDefault();

你说的第二次查询只对第一组进行求和是什么意思?@Kaf我想要所有租金的总和,也就是不分组。但是我需要唯一ID的计数(不是唯一密钥)。第二个查询按u.ID分组,对每个组内的值求和,然后仅返回第一个组。(
FirstOrDefault
)-不确定如何对组进行求和,或者我是否做错了。第二个查询返回第一个组,因为
。FirstOrDefault()
。我不想要每个组的摘要列表。我想要整件事的一个摘要。那你为什么按p.u.ID来分组呢?