2010-03-22 5 views
3

Не могли бы вы помочь мне разобраться в этом? Мне нужно заменить соединение с таблицей OSLP на соединение OUTER. Кажется немного сложным для тех, кто не является экспертом в Linq для сущностей. Как мне это сделать?Linq to Entities - left Outer Join

var surgeonList = (
    from item in context.T1_STM_Surgeon 
     .Include("T1_STM_SurgeonTitle") 
     .Include("OTER") 
    where item.ID == surgeonId 
    join reptable in context.OSLP 
     on item.Rep equals reptable.SlpCode 
    select new 
    { 
     ID = item.ID, 
     First = item.First, 
     Last = item.Last, 
     Rep = reptable.SlpName, 
     Reg = item.OTER.descript, 
     PrimClinic = item.T1_STM_ClinicalCenter.Name, 
     Titles = item.T1_STM_SurgeonTitle, 
     Phone = item.Phone, 
     Email = item.Email, 
     Address1 = item.Address1, 
     Address2 = item.Address2, 
     City = item.City, 
     State = item.State, 
     Zip = item.Zip, 
     Comments = item.Comments, 
     Active = item.Active, 
     DateEntered = item.DateEntered 
    }).ToList(); 

Заранее благодарен!

ответ

0

Синтаксис следующий и дайте мне знать, если у вас возникли проблемы с переводом кода. Generic внешнее соединение (группа присоединиться):

вар запрос = из л в левой

join r in right 
    on l.ID 
    equals l.right.ID into groupedJoin 
    select new 
    { 
     ID= l.ID, 
     OuterJoined= groupedJoin.Select(r=> right) 
    }; 

ваш результат все в левой, даже если право не существует.

Очевидно, я не могу гарантировать, что это будет компилировать, но это будет выглядеть следующим образом:

вар surgeonList = (

from item in context.T1_STM_Surgeon 
     .Include("T1_STM_SurgeonTitle") 
     .Include("OTER") 
    where item.ID == surgeonId 
    join reptable in context.OSLP 
     on item.Rep equals reptable.SlpCode into groupedJoin 
    select new 
    { 
     ID = item.ID, 
     First = item.First, 
     Last = item.Last, 
     Rep = reptable.SlpName, 
     Reg = item.OTER.descript, 
     PrimClinic = item.T1_STM_ClinicalCenter.Name, 
     Titles = item.T1_STM_SurgeonTitle, 
     Phone = item.Phone, 
     Email = item.Email, 
     Address1 = item.Address1, 
     Address2 = item.Address2, 
     City = item.City, 
     State = item.State, 
     Zip = item.Zip, 
     Comments = item.Comments, 
     Active = item.Active, 
     DateEntered = item.DateEntered 
     OSLP = groupedJoin.Select(x=>WHATEVERYOUNEED) 
}).ToList(); 

И вам просто нужно заменить groupedJoin.Select (х => WHATEVERYOUNEED) с выбором чего-то или простого .ToList

+0

Не могли бы вы отредактировать свое сообщение, чтобы включить в него кодовые блоки? Невозможно прочитать. –

+0

Я сделал это вскоре после того, как увидел хаос ... это лучше? – Nix

Смежные вопросы