【问题标题】:Linq: Join on multiple kinds of conditionsLinq:加入多种条件
【发布时间】:2017-06-27 01:35:22
【问题描述】:

我正在尝试在多个条件下加入。问题是它是“等于”和“不等于”的混合体。这个previous answer 仅在您想加入“等于”时才有效。

from p1 in context.Set<PersonList>()
join p2 in context.Set<PersonList>()
on p1.Email equals p2.Email && p1.PersonID != p2.PersonID

【问题讨论】:

  • 提供一些示例代码以及您尝试过的内容如何?
  • 编辑:添加示例。

标签: linq join


【解决方案1】:

只需使用where 捕获额外条件:

from p1 in context.Set<PersonList>()
join p2 in context.Set<PersonList>()
on p1.Email equals p2.Email into p2j
from p2 in p2j.DefaultIfEmpty()
where p2 != null && p1.PersonID != p2.PersonID

【讨论】:

  • 没错,但你不能用它做外连接。
  • 您的示例不是外连接。你想要左外连接还是右外连接?
  • 左外连接。
  • 改为左外连接;如果p2 为空,则不测试PersonID,但如果您想查找所有缺少p2p1,则可以删除该测试。
猜你喜欢
  • 1970-01-01
  • 2018-01-30
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
相关资源
最近更新 更多