2

複数のフィールドを介して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

あなたのアプローチは良く、うまくいくでしょう。コンパイラエラーを修正するだけで済みます。おそらく、クエリ内の2つの匿名タイプは同じタイプではありません。これは、フィールドの順序が変更された場合、またはフィールドのタイプが完全に一致しない場合に簡単に発生します。

ただし、これはC#の問題です。あなたがそれを乗り越えると、あなたのORMはこれをサポートします。

于 2012-09-25T16:17:51.967 に答える
0

私が見ることができる最も簡単な方法は、「ユニオン」メソッドを使用することです。両方のテーブルから複数のフィールドでデータを抽出し、それらでUnionを使用するだけです。これにより、重複することなく両方のテーブルが結合されます。

于 2012-09-25T16:21:09.997 に答える