【问题标题】:Sum and Group By in Linq to EntitiesLinq to Entity 中的 Sum 和 Group By
【发布时间】:2011-05-18 11:49:43
【问题描述】:

我试图通过分组来获得一些值的总和,但我被卡住了。这是我的表的示例结构:

我想得到的是:

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

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

示例结果应该是这样的:

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

我怎样才能做到这一点?

【问题讨论】:

  • 你的模型没有导航属性,是你故意的吗?
  • 是的,这不是完整的模型,只是一个样本。
  • 如果添加导航属性(例如 user.Projects、project.Users),LINQ 应该比手动加入要简单得多。

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


【解决方案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 称为 Projects

【讨论】:

    猜你喜欢
    • 2012-10-26
    • 2017-05-29
    • 2023-04-08
    • 2010-09-23
    • 2012-12-08
    • 2021-05-09
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多