所以我要做的是: -
SELECT * FROM TableA
JOIN TableB ON TableA.OriginPhoneNumber=TableB.Id OR TableA.DestinationPhoneNumber=TableB.Id
我知道相当奇怪的查询!但是我试图在EntityFramework / Linq中复制它 - 看看所有的样本,当联接使用AND(使用匿名类型)时,我可以看到一个非常简单的方法,但是存在相同的结果还是加入?
答案 0 :(得分:4)
只需使用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 };
令人怀疑的是,连接条件或连接条件会比这更有效,但很可能会导致相同的执行计划。除了性能之外,它会产生相同的结果。
答案 1 :(得分:1)
我使用了Union
var firstJoin=from tbl in TableA
join c in TableB
on c.OriginPhoneNumber Equals tbl.Id
var secondJoin=from tbl in TableA
join c in TableB
on c.DestinationPhoneNumber Equals tbl.Id
var result=firstJoin.Union(secondJoin)