我需要编写一个 Linq-Entity 状态来获取下面的 SQL 查询
SELECT RR.OrderId
FROM dbo.TableOne RR
JOIN dbo.TableTwo M ON RR.OrderedProductId = M.ProductID OR RR.SoldProductId= M.ProductID
WHERE RR.StatusID IN ( 1, 4, 5, 6, 7 )
我被下面的语法困住了
int[] statusIds = new int[] { 1, 4, 5, 6, 7 };
using (Entities context = new Entities())
{
var query = (from RR in context.TableOne
join M in context.TableTwo on new { RR.OrderedProductId, RR.SoldProductId} equals new { M.ProductID }
where RR.CustomerID == CustomerID
&& statusIds.Any(x => x.Equals(RR.StatusID.Value))
select RR.OrderId).ToArray();
}
这给了我下面的错误
错误 50 连接子句中的表达式之一的类型不正确。调用“Join”时类型推断失败。
如何对表进行多条件连接。
最佳答案
您不必使用连接语法。在 where
子句中添加谓词具有相同的效果,您可以添加更多条件:
var query = (from RR in context.TableOne
from M in context.TableTwo
where RR.OrderedProductId == M.ProductID
|| RR.SoldProductId == M.ProductID // Your join
where RR.CustomerID == CustomerID
&& statusIds.Any(x => x.Equals(RR.StatusID.Value))
select RR.OrderId).ToArray();
关于c# - 具有多个 OR 条件的 Linq to Entity Join 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15887223/