使用 linq c# 检索对象集合下的值总和

Retriving Sum of values under object collection using linq c#

我是linq的菜鸟。并想用 linq 解决这个问题,这样我就可以节省一些服务器行程。

对象结构如下

EntityA{
    int Id,
    string Name,
    EntityB entityb
}

EntityB{
    int idb,
    string type,
    ICollection<EntityC> entityc
}

EntityC{
    int idc,
    ICollection<EntityD> entityd
}

EntityD{
    int idd,
    ICollection<EntityE> entitye
}

EntityE{
    int ide,
    int valuepoint
}

我需要使用 EntityD 中的值点的总和来检索特定的(在某些条件下)EntityA。目前我正在通过常规迭代器来完成。从 EntityB 检索集合并存储在 List 中,并在 foreach 的帮助下我能够解决这个问题。但是在复杂的对象中,由于数据库很大,执行起来会花费太多时间。

一种方式:

var results=db.EntitiesA.Sum(a=>a.EntitiesB.Sum(b=>b.EntitiesC.Sum(c=>c.EntitiesD.Sum(d=>d.ValuePoint))));

另一种方式:

var results=db.EntitiesA.Sum(a=>a.EntitiesB
 .SelectMany(b=>b.EntitiesC)
 .SelectMany(c=>c.EntitiesD)
 .Select(d=>d.ValuePoint));