【发布时间】:2011-08-14 01:36:39
【问题描述】:
在下面的 Join 中,我想使用多个字段来进行连接,而不是只使用一个字段。
var join = group.Join(procSums, g => g.DeptID, ps => ps.key.deptID, (g, ps)...
我找到的所有示例都使用查询样式来执行此操作,但我无法翻译。
谢谢!
【问题讨论】:
在下面的 Join 中,我想使用多个字段来进行连接,而不是只使用一个字段。
var join = group.Join(procSums, g => g.DeptID, ps => ps.key.deptID, (g, ps)...
我找到的所有示例都使用查询样式来执行此操作,但我无法翻译。
谢谢!
【问题讨论】:
你只需要基于新的匿名对象加入:
// 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 }); 但是它有一个错误说不能推断类型参数。类型相同,完全匹配。
您需要传递使用字段创建匿名类型的 lambda 表达式。
例如:
group.Join(procSums, g => new { g.DeptID, g.OtherField }, ps => new { ps.key.deptID, ps.key.OtherField }, ...)
匿名类型必须完全匹配。
【讨论】: