2011-07-28 12 views
2

これらのVB.NET LINQ to SQL Left Joinオプションは、他のものより優れていますか?VB.NETでは、どのLINQ to SQL Left-Joinメソッドを使用するのが最適ですか?

どちらを使用するかわかりません。

方法1:ラムダ

Dim query = From A In DB.Product_Categories 
      From B In DB.MasItems.Where(Function(x) CBool(x.itemkey = A.ItemKey)).DefaultIfEmpty 
      Select A.Name 

方法2:グループが

Dim query = From A In DB.Product_Categories 
      Group Join B In DB.MasItems On B.itemkey Equals A.ItemKey Into X = Group 
      From Y In X.DefaultIfEmpty 
      Select A.Name() 

答えて

2

生成されたSQLは両方のクエリで同じなので、LINQ to SQLでは実際には個人的な好みです。

+1

本当ですか? – SLaks

+0

私は現在のプロジェクトで2つのテーブルに対してlinqpadを実行し、sqlを調べました。私がする前に、方法1は外部結合にはならないと仮定しましたが、実際にはそうでした。 – saus

2

EDITに参加:これはオブジェクトへのLINQのために真です。
LINQ to SQLについてよくわかりません。

GroupJoinは内部的にハッシュテーブルを作成するので、方法2は高速です。

MasItemsをカテゴリごとに検索する必要があるため、方法1はO(n2)です。

+0

あなたは他の回答にコメントできますか?彼らが矛盾しているので、現時点でどちらが正しいかわかりません –

+0

@hamlin:LINQ to SQLについて話していたことはわかりませんでした。知りません;生成されたSQLをチェックすることができます。 – SLaks

関連する問題