HaB*_*aBo 12 c# linq linq-to-entities entity-framework
我需要编写一个可以获得以下SQL查询的Linq-Entity状态
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 )
Run Code Online (Sandbox Code Playgroud)
我坚持使用以下语法
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();
}
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误
错误50 join子句中某个表达式的类型不正确.调用"加入"时类型推断失败.
如何为表执行多条件连接.
Ger*_*old 24
您不必使用连接语法.在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();
Run Code Online (Sandbox Code Playgroud)
将查询语法从使用更改join
为使用附加from
子句
var query = (from RR in context.TableOne
from M in context.TableTwo.Where(x => x.ProductID == RR.OrderedProductId || x.ProductID == RR.SoldProductId)
where statusIds.Any(x => x.Equals(RR.StatusID.Value))
select RR.OrderId).ToArray();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36448 次 |
最近记录: |