【问题标题】:Retriving Sum of values under object collection using linq c#使用linq c#检索对象集合下的值总和
【发布时间】:2015-12-16 15:50:15
【问题描述】:

我是 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 中的 valuepoint 的总和来检索特定的(在某些条件下)EntityA。目前我正在通过常规迭代器进行操作。从 EntityB 检索集合并存储在 List 中并在 foreach 的帮助下我能够解决这个问题。但是在复杂的对象中,由于数据库很大,执行时间太长。

【问题讨论】:

    标签: c# linq lambda entity-framework-6 iteration


    【解决方案1】:

    一种方式:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      相关资源
      最近更新 更多