LINQ中如何进行外连接?

3

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

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

我该如何使用LINQ查询实现这一点?
2个回答

5

使用Lambda表达式可以使用GroupJoin

示例:

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

4

请参见:MSDN上的C#编程指南:如何执行左外连接

例如:

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

我认为是这个:http://msdn.microsoft.com/en-us/library/bb397895.aspx(左外连接) - DaveShaw
你会如何使用LINQ中的链式方法语法来完成这个任务? - Chev
你需要使用GroupJoin()方法。 - DaveShaw
有趣。谢谢你的信息。 - Chev

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