【问题标题】:EF code How to use lambda expresssion to implement left join?EF代码如何使用lambda表达式实现左连接?
【发布时间】:2014-09-03 03:55:05
【问题描述】:

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

【问题讨论】:

标签: entity-framework lambda


【解决方案1】:

我认为这篇来自 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 表达式将是这样的......

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

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

【讨论】:

  • 谢谢。但我想使用 lambda 表达式。我不知道如何编写 SELECT 部分 .select()
  • DefaultIfEmpty() 应该是这里的关键。请检查您可以在 Lambda 表达式中使用它的位置。您是否有任何特定原因要使用 Lambda 表达式? linq 查询完美运行...
  • Linq 很好,我知道。我只是想有另一种方式来得到我想要的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
相关资源
最近更新 更多