【问题标题】:Groupby, sum with multiple joins in Linq lambdaGroupby,Linq lambda中的多个连接求和
【发布时间】:2013-11-04 16:59:00
【问题描述】:

我有以下 Linq 查询,我想根据 WorkItem.Id小时数 求和:

EntryCategories
           .Join(TimeReportEntries,
                 ec => ec.Id,
                 tr => tr.WorkItem.Id,
                 (ec, tr) => new { ec, tr })
                            .Join(Timesheets,
                                  ecs => ecs.tr.Timesheet.Id,
                                  t => t.Id,
                                  (ecs, t) => new { ecs, t })
                                              .Join(Users,
                                                    ts => ts.t.User.Id,
                                                    u => u.Id,
                                                    (ts, u) => new
                                                        {
                                                            Employee = ts.t.User.FirstName + " " + ts.t.User.LastName,
                                                            Hours = ts.ecs.tr.Hours
                                                        });

【问题讨论】:

  • @Yosi - 似乎他们想从上述查询中获取 Hours 的总和并按 WorkItem.Id 分组,方法是扩展它或拥有一个新对象来保存它
  • 好的,祝你好运 :),但问题是什么?
  • @Yosi - 如何 - 我假设 :),我不确定自己,现在尝试找出该结果集中的实际内容为时已晚。 OP,你能告诉我们该查询的当前结果集吗?

标签: c# sql linq join


【解决方案1】:

我不知道你希望它如何工作并且不能在这里编译它,但我认为你需要一个 group by 来获得每个工作项的小时总和,这就是你所追求的。

EntryCategories
       .Join(TimeReportEntries, ec => ec.Id, tr => tr.WorkItem.Id, (ec, tr) => new { ec, tr })
       .Join(Timesheets, ecs => ecs.tr.Timesheet.Id, t => t.Id, (ecs, t) => new { ecs, t })
       .Join(Users, ts => ts.t.User.Id, u => u.Id, (ts, u) => new
        {
            WorkItemId = ts.ecs.tr.WorkItem.Id
            Employee = ts.t.User.FirstName + " " + ts.t.User.LastName,
            Hours = ts.ecs.tr.Hours
        })
       .GroupBy(x => x.WorkItemId)
       .Select(x => new 
        { 
            WorkItemId = x.Key, 
            Hours = x.Sum(y => y.Hours)
        });

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多