Linqを介して同じテーブルの複数の列を内部結合するにはどうすればよいですか?
例:私はすでにこれを持っています...
join c in db.table2 on table2.ID equals table1.ID
これを追加する必要があります...
join d in db.table2 on table2.Country equals table1.Country
結合演算子を使用する代わりに、クエリをWhere句内に配置できます。
結合演算子は、VB.NETで複数の句をサポートしますが、C#はサポートしません。
または、ANSI-82スタイルの「SQL」構文を使用することもできます。例:
from t1 in table1
from t2 in table1
where t1.x == t2.x
&& t1.y == t2.y
これは私がそれを機能させることができた唯一の方法です(c#で)。
var qry = from t1 in table1
join t2 in table2
on new {t1.ID,t1.Country} equals new {t2.ID,t2.Country}
...
から 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;
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;
これは、あらゆる種類のデータ型に適用できます。
VBの場合:
dim qry = FROM t1 in table1 _
JOIN t2 in table2 on t2.ID equals t1.ID _
AND t2.Country equals t1.Country