我想知道在通过多个字段联接两个表时如何在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将支持这一点。

09-26 19:46