17

Linq を介して同じテーブルの複数の列を内部結合するにはどうすればよいですか?

例:私はすでにこれを持っています...

join c in db.table2 on table2.ID equals table1.ID

これを追加する必要があります...

join d in db.table2 on table2.Country equals table1.Country 
4

5 に答える 5

31

これが私がそれを機能させることができた唯一の方法です(C#で)。

var qry = from t1 in table1
          join t2 in table2
          on new {t1.ID,t1.Country} equals new {t2.ID,t2.Country}
          ...
于 2008-12-06T01:04:20.637 に答える
14

結合演算子を使用する代わりに、Where 句内にクエリを配置できます。

結合演算子は、VB.NET では複数の句をサポートしていますが、C# ではサポートしていません。

または、ANSI-82 スタイルの「SQL」構文を使用できます。たとえば、次のようになります。

from t1 in table1
from t2 in table1
where t1.x == t2.x
&& t1.y == t2.y
于 2009-04-30T13:25:01.387 に答える
13

http://www.onedotnetway.com/linq-to-sql-join-on-multiple-conditions/から

これらのテーブルは両方とも、共通フィールドとしてPostCodeとCouncilCodeを持っています。HouseのPostCodeとCouncilCodeの両方が一致するShoppingMallからすべてのレコードを取得するとします。これには、2つの列を使用して結合を行う必要があります。LINQでは、このような結合は匿名型を使用して実行できます。これが例です。

var query = from s in context.ShoppingMalls
        join h in context.Houses
        on
        new { s.CouncilCode, s.PostCode }
        equals
         new { h.CouncilCode, h.PostCode }
        select s;
于 2009-07-16T17:36:48.373 に答える
6
var query = from s in context.ShoppingMalls
join h in context.Houses
on
new {CouncilCode=s.CouncilCode, PostCode=s.PostCode }
equals
new {CouncilCode=h.District, PostCode=h.ZipCode }
select s;

これは、あらゆる種類のデータ型に適用できます。

于 2012-06-18T06:26:46.583 に答える
1

VB では:

 dim qry = FROM t1 in table1 _
           JOIN t2 in table2 on t2.ID equals t1.ID _
           AND t2.Country equals t1.Country 
于 2008-12-05T23:02:58.637 に答える