Oma*_*OUG 2 c# linq sql-server c#-6.0 ef-core-2.1
我想将此 sql 查询转换为 linq :
select * from A a
join B b on ( (a.level1= b.PerimeterID and b.PerimeterLevelID = 1)
OR (a.level2= b.PerimeterID and b.PerimeterLevelID = 2)
OR (a.level3= b.PerimeterID and b.PerimeterLevelID = 3)
)
Run Code Online (Sandbox Code Playgroud)
我试过的:
from a in A
join b in B on new {PerimeterID = a.level1, PerimeterLevelID = 1 } equals new { b.PerimeterID, b.PerimeterLevelID }
where (a.level2 == b.PerimeterID && b.PerimeterLevelID == 2) ||
(a.level3 == b.PerimeterID && b.PerimeterLevelID == 3)
Run Code Online (Sandbox Code Playgroud)
它生成这个 sql 查询:
select * from A a
join B b on (a.level1= b.PerimeterID and b.PerimeterLevelID = 1)
where (a.level2= b.PerimeterID and b.PerimeterLevelID = 2)
OR (a.level3= b.PerimeterID and b.PerimeterLevelID = 3))
Run Code Online (Sandbox Code Playgroud)
我也试过Linqer但它不能将 OR 转换为 linq
SQL 无法转换为 LINQ:或
我必须做些什么来转换这个 sql 查询
内部联接等效于过滤的交叉联接。那么怎么样
from a in A
from b in B
where (a.level1 == b.PerimeterID && b.PerimeterLevelID == 1) ||
(a.level2 == b.PerimeterID && b.PerimeterLevelID == 2) ||
(a.level3 == b.PerimeterID && b.PerimeterLevelID == 3)
select new {a,b};
Run Code Online (Sandbox Code Playgroud)
?
| 归档时间: |
|
| 查看次数: |
4491 次 |
| 最近记录: |