LINQ查询中的左外连接[重复]

Posted

技术标签:

【中文标题】LINQ查询中的左外连接[重复]【英文标题】:Left outer join in LINQ query [duplicate] 【发布时间】:2013-01-12 15:01:25 【问题描述】:

可能重复:LEFT OUTER JOIN in LINQ

如何使用左外连接进行 LINQ 查询?

【问题讨论】:

只需在 google 中输入 c# linq left outer join 并至少获得 How to: Perform Left Outer Joins (C# Programming Guide) @KonstantinVasilcov 现在,现在,Konsty - 善待新人。你应该给他一个适当的链接like this one。你不同意吗? @KonradViltersten 81 的声誉足够公平,足以了解该网站的规则。我想我已经给了他我所期望的一切。 @KonstantinVasilcov 我怀疑你错过了我的意思。点击链接,看看我的意思。 :) 相关帖子 - Linq join iquery, how to use defaultifempty 【参考方案1】:

您可以使用Enumerable.DefaultIfEmpty 方法进行左外连接。

你可能会看到:How to: Perform Left Outer Joins (C# Programming Guide) - MSDN

考虑以下来自 MSDN 的示例,

class Person

    public string FirstName  get; set; 
    public string LastName  get; set; 


class Pet

    public string Name  get; set; 
    public Person Owner  get; set; 

左外连接查询可以是:

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

【讨论】:

【参考方案2】:
 var query = (from t1 in Context.Table1
              join t2temp in Context.Table2 on t1.Id equals t2.Id into tempJoin
              from t2 in tempJoin.DefaultIfEmpty()
              select ...);

【讨论】:

以上是关于LINQ查询中的左外连接[重复]的主要内容,如果未能解决你的问题,请参考以下文章

linq中的左外连接

将两个查询的左外连接转换为 LINQ

使用 LINQ 查询语法 EF Core C# 的左外连接

csharp LINQ中的左外连接

Linq中的左外连接

使用 Linq to Sql 的左外连接结果问题