<分区>
所以我想做的是:-
SELECT * FROM TableA
JOIN TableB ON TableA.OriginPhoneNumber=TableB.Id OR TableA.DestinationPhoneNumber=TableB.Id
我知道这是一个很奇怪的查询!但是我试图在 EntityFramework/Linq 中复制它——查看所有示例,当连接使用 AND(使用匿名类型)时,我可以看到一种非常简单的方法,但 OR 连接是否存在相同的结果?
<分区>
所以我想做的是:-
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/