Linq to Entities - 左外连接

3

你能帮我弄清楚这个问题吗? 我需要用OUTER JOIN替换掉与OSLP表的JOIN。对于不熟悉Linq to entities的人来说似乎有些棘手。我该怎么做?

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

Thanks in advance!!

1个回答

0

语法如下,请告诉我如果您在翻译代码时遇到了困难。 通用外连接(组连接):

var query = from l in left

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

你只需要用选择某些内容或简单的 .ToList 替换 groupedJoin.Select(x=>WHATEVERYOUNEED)。


你能否编辑你的帖子并加入代码块呢?这样才能更好地阅读。 - Tommy Jakobsen
我在看到混乱后不久就这样做了...这样好吗? - Nix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接