【问题标题】:LINQ: How to do JOIN using the linq extension method style on multiple fields?LINQ:如何在多个字段上使用 linq 扩展方法样式进行 JOIN?
【发布时间】:2011-08-14 01:36:39
【问题描述】:

在下面的 Join 中,我想使用多个字段来进行连接,而不是只使用一个字段。

var join = group.Join(procSums, g => g.DeptID, ps => ps.key.deptID, (g, ps)...

我找到的所有示例都使用查询样式来执行此操作,但我无法翻译。

谢谢!

【问题讨论】:

    标签: linq join field


    【解决方案1】:

    你只需要基于新的匿名对象加入:

    // ClasID is a placeholder, it could be any property you'd like
    var join = group.Join(procSums,
                          g => new { g.DeptID, g.UnitLoc, g.Proc },
                          ps => new 
                                { 
                                  DeptID = ps.key.deptID, 
                                  UnitLoc = ps.key.unitLoc,
                                  Proc = ps.key.procName 
                                },
                          (g, ps) => new { g, ps });
    

    【讨论】:

    • 好的,这里是var join = group.Join(procSums, g => new { g.DeptID, g.UnitLoc, g.Proc }, ps => new { ps.key.deptID, ps.key.unitLoc, ps.key.procName }, (g, ps) => new { g, ps }); 但是它有一个错误说不能推断类型参数。类型相同,完全匹配。
    • @user259286 - 匿名类型(及其类型)中的属性名称必须完全匹配。我会更新我的答案。
    【解决方案2】:

    您需要传递使用字段创建匿名类型的 lambda 表达式。
    例如:

    group.Join(procSums, g => new { g.DeptID, g.OtherField }, ps => new { ps.key.deptID, ps.key.OtherField }, ...)
    

    匿名类型必须完全匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-23
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      相关资源
      最近更新 更多