1

4つのテーブルを結合するlinq-to-sqlクエリを作成しています。私はこのようなものを持っています:

var MyQuery = from a in MyDC.Table1
              from b in MyDC.Table2
              from c in MyDC.Table3
              from d in MyDC.Table4
              where .....

私の質問はwhere条項についてです。where句は次のように書くことができます。

   where a.PropX == b.PropY && b.PropX == c.PropZ && ....

または次のような複数の句:

   where a.PropX == b.PropY
   where b.PropX == c.PropZ
   ...

どちらかのオプションを選択することに違いはありますか?

あなたの提案をありがとう。

4

2 に答える 2

4

私は上記のどちらも好まないでしょう。代わりに、SQL構文に従います。これは、クエリの意図をそのように隠しません。

var query  from a in MyDC.Table1 
           join b in MyDC.Table2 on a.Property1 equals b.Property2
           join c in MyDC.Table3 on b.Property1 equals c.Property5
           join d in MyDC.Table4 on c.Property2 equals d.Property1
select ...
于 2012-07-31T19:07:32.613 に答える
1

このようにしてはいけません。コードは、すべてのデータ ソースのデカルト結合 (乗算) を生成し、基準に従ってフィルター処理します。代わりに、Icarus が示唆するように単純な結合を使用する必要があります。

(あなたの混乱がどこから来るのか理解しています: 一部の SQL ダイアレクトでは、結合条件を inWHEREまたは in のいずれかに記述できますJOIN。ただし、LINQ の場合はそうではありません。)

于 2012-07-31T19:58:23.403 に答える