2011-07-12 20 views
4

私はtableAとtableBを持っています。
ラムダ式を使用して左結合を実行したいと考えています。これは等しいSQLステートメントです:ラムダ式を使用して左結合

SELECT * 
FROM tableA A 
    LEFT JOIN tableB B ON A.userId=B.userId 

ラムダ式を使用してこれを行うにはどうすればよいですか?

+0

可能な複製[あなたはどのようにlinq拡張メソッドを使用して左外部結合を実行しますか?](http://stackoverflow.com/questions/584820/how-do-you-performa-a- left-outer-join-linq-extension-methodsを使用して) –

答えて

5

It's usually an error to use an explicit join in LINQ to Entities.

代わりに、ナビゲーションプロパティを使用します。エンティティへ

var q = Context.TableAs.Select(a => new { a.Foo, a.TableB.Bar }); 

LINQがnull参照を合体します。したがって、TableAsの一部のレコードでa.TableBnullの場合、NULL参照例外を与える代わりにがnullを返します。それはSQLのように動作するLEFT JOIN

+0

ありがとうございます。 – Eranga

+0

@Craig Stuntz:私はナビゲーションプロパティを持っていません.. – Naor

+0

@ Naor:通常、正しいことはそれらを追加することです。何らかの理由で明示的に 'join 'することができない場合にのみ、明示的な' join'を使うべきです。 –

関連する問題