我想知道在通过多个字段联接两个表时如何在Linq中编写内部联接。
例如,说这是等效的SQL:
SELECT tableOne.fieldThree
FROM table_One AS tableOne,
table_Two AS tableTwo,
WHERE
tableOne.fieldOne == tableTwo.fieldOne AND
tableOne.fieldTwo == tableTwo.fieldTwo;
我尝试了这个:
tableTwo.Join(tableOne,
two => new { two.fieldOne, two.fieldTwo },
one => new { one.fieldOne, one.fieldTwo },
(two, one) => one.fieldThree)
.ToList();
但是编译器显示错误,提示无法从用法中推断出该方法。
谢谢。
最佳答案
您的方法很好,并且会起作用。您只需要修复编译器错误。您的查询中的两个匿名类型可能不是同一类型。如果更改字段顺序或它们的类型不完全匹配,则很容易发生这种情况。
但是,这是一个C#问题。一旦您过去了,您的ORM将支持这一点。