EF代码如何使用lambda表达式实现左连接?

时间:2014-09-03 03:55:06

标签: entity-framework lambda

SQL:

select a.id, b.name
from a
left join b on a.id = b.id

我想在EF中使用lambda来获得与此sql相同的结果

以下是我所做的:

var list = entities.a
    .GroupJoin(
        entities.b, 
        a => a.id, 
        b => b.id, 
        (a, b) => new { a, b })
    .Select(o => o)
    .ToList();

这里Select(o => o),我只是不知道如何在sql中获得相同的结果

select a.id, b.name

1 个答案:

答案 0 :(得分:0)

我认为来自MSDN的这篇文章会有很多帮助...

http://msdn.microsoft.com/en-us/library/bb397895.aspx

这是上一篇文章的引用,可能会有所帮助......

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

<强>更新

根据您的要求,Lambda Expression将是这样的......

.SelectMany(@a => @a.@a.b.DefaultIfEmpty(), (@a, joineda) => new {@a, joineda})

不确定,如果它是正确的,但它是一个起点,至少......