2

我想知道通过多个字段连接两个表时如何在 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();

但是编译器显示一个错误,指出无法从使用中推断出该方法。

谢谢。

4

2 回答 2

1

你的方法很好,而且会奏效。您只需要修复编译器错误。您查询中的两个匿名类型可能不是同一类型。如果字段的顺序发生变化,或者它们的类型不完全匹配,这很容易发生。

不过,这是一个 C# 问题。一旦你过去了,你的 ORM 就会支持这一点。

于 2012-09-25T16:17:51.967 回答
0

我能看到的最简单的方法是使用“联合”方法。只需从两个表中提取多个字段的数据,然后在它们上使用 Union 即可。这将连接两个表而不会重复。

于 2012-09-25T16:21:09.997 回答