2012-01-13 16 views
5

için SQL dönüştürmek yardım edin ben LINQ dönüştürmek anlamaya çalışıyorum bu sorgu var: Buradabeni 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) 

Ve şimdiye kadar benim LINQ geçerli:

(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 } 
); 

İlk birleşiminde "Birleştirilen cümlede ifadelerden birinin türü yanlış." Şeklinde bir arama iletisi alıyorum.

Yaptığım tüm aramalar, tür eşleme hatalarıyla ilişkiliydi, ancak tüm türlerimi birleştirmeler içinde dört kez kontrol ettim ve hepsi aynı.

+0

Yabancı anahtarlarınızı zaten kurdunuz mu? Eğer öyleyse, bu önemsiz olabilir. –

+0

Derlemenin/çalışmanın yapılıp yapılmayacağını görmek için birleşimden (ve buna bağlı olan her şeyden) birini kesmeyi denediniz mi? En azından bu şekilde 'şikayetçi olmaktan aşağı daraltabilirsin? – R0MANARMY

cevap

5

böyle bir şey yapmaya çalışın:

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

çalışabilir.

+0

Bu mantıklı. Özellikler tam olarak aynı olmalıdır. – tobias86

+0

Tigran, bunun için teşekkürler, işe yaradı, geç cevap için özür dilerim. –

+1

@Sean Haddy: Rica ederim. – Tigran