2015-07-24 3 views
0

мне нужна помощь, чтобы преобразовать следующий запрос LinqLinq внешние соединения

SELECT c.Code, c.Name 
from tblCodes as c 
where c.code not in 
    (select Code from npConsultant where ConsultantName = 'X') 
    and c.Code < 'AA.0000' 

Когда я пытаюсь в LINQPad это, кажется, не понимают в или DefaultIfEmpty. Возможно, это методы, которые необходимы для того, что мне нужно сделать.

ответ

0

Простой ответ: используйте ключевое слово «let» и создайте подзапрос, который поддерживает ваш условный набор для основного объекта.

var Objlist= from u in tblCodes 
      let ces = from ce in npConsultant 
      select ce.code 
      where !ces.Contains(u.code) 
      select u; 
+0

Пробовал эту версию, и она будет выполнять, но не возвращает никаких результатов, даже если запрос sql сверху возвращает 64 строки. –

0

попробовать что-то вроде этого:

var query =  
from c in Customers  
where !(from n in npConsultant 
    where n.ConsultantName='X'  
     select n.Code)  
     .Contains(c.Code)  
    && c.Code < 'AA.0000' 
select c.Code, c.Name; 

Я просто не понимаю, как код может быть меньше, чем «AA.0000» ....

+0

Пробовал выше в LINQPAD, и он говорит мне, что переменные слишком велики для полей, хотя они меньше табличных определений –