Пожалуйста, помогите мне конвертировать SQL в LINQ - PullRequest
5 голосов
/ 14 января 2012

У меня есть этот запрос, который я пытался выяснить, как конвертировать в 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 ».»

Все выполненные мной поиски, связанные с типомсовпадают с ошибками, но я четыре раза проверил все типы в объединениях, и они одинаковы.

1 Ответ

5 голосов
/ 14 января 2012

Попробуйте сделать что-то вроде этого:

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

Должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...