2012-01-13 9 views
5

にSQLを変換する助けてください:私はLINQに変換する方法を理解しようとしてきたこのクエリ持っている私はLINQ

select bjbecd, bjbesk, areotx 
from insku 
inner join iniwre on bjcomp=a7comp and bjbecd=a7becd and bjbesk=a7besk 
inner join initem on bjcomp=arcomp and bjbecd=arbecd 
where a7comp=1 and 
a7wcde in (1,10) and 
a7ohdq>0 and rtrim(a7becd) + rtrim(a7besk) not in 
(select skucode from eoditems) 

そしてここでは、これまでのところ、私のLINQです:

(from i in db.INSKUs 
    join w in db.INIWREs on 
     new { i.BJCOMP, i.BJBECD, i.BJBESK } 
     equals 
     new { w.A7COMP, w.A7BECD, w.A7BESK } 
    join t in db.INITEMs on 
     new { i.BJCOMP, i.BJBECD } 
     equals 
     new { t.ARCOMP, t.ARBECD } 
    where w.A7COMP == 1 
    where w.A7WCDE == 1 || w.A7WCDE == 10 
    where w.A7OHDQ > 0 
    where !(from z in db.EODItems 
      select z.SkuCode).Contains(w.A7BECD.TrimEnd() + w.A7BESK.TrimEnd()) 
    select new { i.BJBECD, i.BJBESK, t.AREOTX } 
); 

最初の結合でエラーメッセージが表示されます。「結合句の式の型が正しくありません。型結合が '結合'の呼び出しで失敗しました。」

すべての検索タイプの一致エラーに関連していましたが、ジョイン内のすべてのタイプが四重にチェックされていて、それらは同じです。

join w in db.INIWREs on 
new { i.BJCOMP, i.BJBECD, i.BJBESK } 
    equals 
     new { BJCOMP = w.A7COMP, BJBECD = w.A7BECD, BJBESK = w.A7BESK } 

が動作するはずです:

+0

既に外部キーを設定しましたか?もしそうなら、これは簡単なことかもしれません。 –

+0

コンパイル/実行するかどうかを確認するために、結合の1つ(およびそれに依存するすべて)を切り取ってみましたか?あなたはそれをどれだけ狭めることができますか? – R0MANARMY

答えて

5

はこのような何かを試してみてください。

+0

これは理にかなっています。プロパティはまったく同じでなければなりません。 – tobias86

+0

Tigran、これをありがとう、それは、遅く応答して申し訳ありませんでした。 –

+1

@Sean Haddy:ようこそ。 – Tigran

関連する問題