Linq to Entities中的Sum和Group By

时间:2010-12-01 12:48:01

标签: .net entity-framework .net-3.5

我试图通过分组得到一些值的总和而且我被卡住了。这是我桌子的样本结构:

alt text

我想得到的是:

用户名,项目名称,项目用户的总工作时间,按用户名和项目名称分组。

技巧是,如果用户在项目中并且用户还没有任何工作时间,我需要显示零或空值。

示例结果应该是这样的:

Username  Project  Total Time
User1     Project1 15
User1     Project2 --
User2     Project1 10

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

一旦添加引用(导航属性)

,这个可怕的选择就会起作用
db.Users.SelectMany(
    x=> x.Projects
           .Select(i=>
                  new
                  {
                     User = x.Name,
                     Project = i.Name,
                     WorkTime = (int?)i.UserWorkTimes.Sum(t=>t.WorkTime)
                   })
    ); 

我的假设是

  1. WorkTime属于int类型。

  2. 从Projects到ProjectUserWorkTimes的Nav.property称为 UserWorkTimes

  3. 从用户到项目的Nav.property称为项目