Linq to Entities - оставленный Outer Join - PullRequest
3 голосов
/ 22 марта 2010

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

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

Заранее спасибо !!

1 Ответ

0 голосов
/ 30 марта 2010

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

var query = от l слева

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

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

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

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 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(x => WHATEVERYOUNEED) либо с выбором чего-либо, либо с простым .ToList

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