ラムダ式を使用したL2Eの次のT-SQLクエリに相当するものは何でしょうか?複数のフィールドでのLINQ結合
Select * from a INNER JOIN b on a.Foo = b.Foo OR a.Foo = b.Bar
私はaとb等しいa.Foo
b.Foo
にOR b.Bar
おかげで参加したいです。
ラムダ式を使用したL2Eの次のT-SQLクエリに相当するものは何でしょうか?複数のフィールドでのLINQ結合
Select * from a INNER JOIN b on a.Foo = b.Foo OR a.Foo = b.Bar
私はaとb等しいa.Foo
b.Foo
にOR b.Bar
おかげで参加したいです。
実際の結合句を使用してLINQで "または"スタイル結合を行うことはできません。 LINQのすべての結合句は等号です。あなたが来ることができる最も近いWHERE句れる:
var query = from a in A
from b in B
where a.Foo == b.Foo || a.Foo == b.Bar
select new { a, b };
あなたは* equijoin *を意味しますか? Equijoinは等価比較のみを使用する結合ステートメントですが、**結合述部は複数の条件を含むことができます**。私が間違っている? –
@MarekGrzenkowicz:残念ながら、この(ウィキペディア:)の私の通常のリファレンスソースは十分な詳細を与えていません。しかし、論理的には、 "AND"のequijoinは、複数列のキー(LINQでモデル化する方法)で単一の等価比較を持つequijoinと見ることができます。 "OR" s *との結合はそのように見ることはできません。 –
これは、[エンティティへのLINQで 'Join'を使用するには、通常、間違い](http://blogs.teamb.com/craigstuntz/2010/01/13/です38525 /)。しかし、実際の問題を説明するのではなく、作り上げた「Foo」と「Bar」について質問しているので、それを手助けするのは難しいです。 –
@CraigStuntz:FooとBarは私の質問では価値がないので使用しました。 FYI、 '(a.ID = b.a_IDまたはa.ID = b.ID)'これは実際のFooとBarです。 – Kamyar
これらのIDに関連したナビゲーションは何ですか?あなたがいずれかを持っている? –