LINQ:如何在多个字段上使用LINQ扩展方法样式进行连接?
在下面的连接中,我希望使用多个字段来进行连接,而不是仅使用一个字段LINQ:如何在多个字段上使用LINQ扩展方法样式进行连接?,linq,join,field,Linq,Join,Field,在下面的连接中,我希望使用多个字段来进行连接,而不是仅使用一个字段 var join = group.Join(procSums, g => g.DeptID, ps => ps.key.deptID, (g, ps)... 我发现的所有示例都使用查询样式来实现这一点,但我无法翻译它 谢谢 您需要传递lambda表达式,该表达式使用字段创建匿名类型。 例如: group.Join(procSums, g => new { g.DeptID, g.OtherField }, p
var join = group.Join(procSums, g => g.DeptID, ps => ps.key.deptID, (g, ps)...
我发现的所有示例都使用查询样式来实现这一点,但我无法翻译它
谢谢 您需要传递lambda表达式,该表达式使用字段创建匿名类型。
例如:
group.Join(procSums, g => new { g.DeptID, g.OtherField }, ps => new { ps.key.deptID, ps.key.OtherField }, ...)
匿名类型必须完全匹配。您只需基于新的匿名对象加入即可:
// 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});
但它有一个错误,表示无法推断类型Args。类型相同,它们完全匹配。@user259286-匿名类型中属性的名称(以及它们的类型)必须完全匹配。我将更新我的答案。