c# - 使用 OR 语法在多个列上连接一个表

标签 c# sql entity-framework linq

<分区>

所以我想做的是:-

SELECT * FROM TableA
JOIN TableB ON TableA.OriginPhoneNumber=TableB.Id OR TableA.DestinationPhoneNumber=TableB.Id

我知道这是一个很奇怪的查询!但是我试图在 EntityFramework/Linq 中复制它——查看所有示例,当连接使用 AND(使用匿名类型)时,我可以看到一种非常简单的方法,但 OR 连接是否存在相同的结果?

最佳答案

只需使用 where 子句进行交叉连接

var results = from a in db.TableA
              from b in db.TableB
              where a.OriginPhonenumber == b.Id 
                    || a.DestinationPhoneNumber == b.Id
              select new { A = a, B = b };

连接条件中的 or 是否比这更有效值得怀疑,但很可能两者都会产生相同的执行计划。除了性能,它会给出相同的结果。

关于c# - 使用 OR 语法在多个列上连接一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36190610/

相关文章:

mysql - MySQL 中的聚合标准差没有差异吗?

c# - 查询太复杂。如何修改查询?

c# - Entity Framework Code First 是否支持存储过程?

c# - 图像源不会显示图片

sql - 调用一个函数然后在 View 中选择一个表

entity-framework - 是否可以将 EF 迁移仅应用于本地/内存数据?

entity-framework - 使用 EntityFramework-Plus 批量插入

mysql - EntityFramework 包含并可能加入?

c# - 如何使用 aspose.pdf for .net 从头开始​​创建空白 pdf?

c# - 在.NET 中,委托(delegate)的内部实现是什么?