【问题标题】:Left Join in Entity Framework 3.5Entity Framework 3.5 中的左连接
【发布时间】:2011-12-07 12:52:11
【问题描述】:

我正在尝试在实体框架工作 3.5 上离开加入,但我无法这样做...

from i in
    (from ta in context.test_attempt
     join uf in context.user_flag on ta.users.USERID equals uf.UserID)
select i;

我想用左连接代替加入?

【问题讨论】:

  • 实体框架 3.5 不存在。你的意思是 EF 1、4、4.1 还是 4.2(可能是 1)?
  • 我认为他的意思是 .NET 3.5 的 EF1。老实说,您真的不应该使用 EF1。非常有缺陷。要么升级到 EF 和 .NET 4,要么使用另一个 ORM IMO。

标签: c# linq entity-framework


【解决方案1】:

您需要使用DefaultIfEmpty() 进行外连接:

from ta in context.test_attempt
join uf in context.user_flag on ta.users.USERID equals uf.UserID into g
from uf in g.DefaultIfEmpty()
select new { ta, uf }

您上面的外部 from/select 是不必要的,只需将 tauf 投射到您需要的内容中。

【讨论】:

  • 实体框架 3.5 不支持 DefaultIfEmpty()。我试过这个,但它给出了错误............
  • 那我觉得你倒霉了。 :(
  • 除了 DefaultIfEmpty() 实体框架 3.5 不支持这个还有其他方法吗?
【解决方案2】:

您可以在此处找到不同 LINQ 连接的示例:http://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9 以及大量其他 LINQ 示例。

【讨论】:

  • DefaultIfEmpty() 不支持实体框架 1.1。我试过这个,但它给出了错误............ -
【解决方案3】:

.NET 3.5 中的实体框架在 Linq 查询中不提供左连接。 获取“加入记录”的方法是通过导航属性 实体

从这里:Left Outer Join in Entity Data Model asp.net

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2011-04-30
    • 2018-04-26
    • 2018-03-24
    相关资源
    最近更新 更多