【问题标题】:How to do an outer join in LINQ?如何在 LINQ 中进行外部连接?
【发布时间】:2011-06-29 23:02:29
【问题描述】:

我已经定义了两个实体,它们映射到我的数据库中的两个表。在 SQL 中,我会像这样进行连接:

select *
from tableA a
left outer join tableB b on b.ID = a.ID
where some condition

如何使用 LINQ 查询来做到这一点?

【问题讨论】:

    标签: c# sql linq entity-framework linq-to-entities


    【解决方案1】:

    使用 Labda 表达式,您使用 GroupJoin

    例子:

    var query =
      People
      .GroupJoin(
        Pets,
        person => person.PersonId,
        pet => per.Owner,
        (person, petCollection) =>
           new
           {
              Person = person,
              Pets = petCollection.Select(pet => pet.Name),
           });
    

    【讨论】:

      【解决方案2】:

      请参阅:MSDN 上的How to: Perform Left Outer Joins (C# Programming Guide)

      例如:

      var query = from person in people
          join pet in pets on person equals pet.Owner into gj
          from subpet in gj.DefaultIfEmpty()
          select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) };
      

      【讨论】:

      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2018-02-10
      • 2010-09-28
      • 1970-01-01
      • 2021-08-24
      相关资源
      最近更新 更多