我有以下SQL查询
SELECT *
FROM LOC l
JOIN CLA c ON l.IdLoc = c.IdLoc
JOIN FA f on c.IdCla = f.IdCla
LEFT JOIN CON co ON f.IdCla = co.IdCla
AND co.DeletedDate IS NULL
AND co.IdUser = f.IdUser
WHERE f.IdUser = 7
AND f.DeletedDate IS NULL
我想将其转换为LINQ
,但我绝对不会轻易使用LINQ的LEFT JOIN
和“临时表”。
此外,我试图转换它,但似乎无法在LINQ中创建一个WHERE
内部的连接子句(Linqer告诉我并且Linqpad似乎没有能够在免费版本中从SQL转换为LINQ)
非常感谢
答案 0 :(得分:2)
我认为你正在寻找这样的东西。我遗漏了select子句,这样你就可以得到你需要的东西。注意事项:
=NULL
条件,请创建与另一个实体中的字段名称匹配的变量名称。将其设置为=null
,但将其强制为您设置的字段的可空数据类型。编辑:更新了查询以将where子句移动到连接
from l in LOC
join c in CLA
on l.IdLoc equals c.IdLoc
join f in FA
on new { c.IdCla, IdUser = 7, DeletedDate = (DateTime?)null }
equals new { f.IdCla, f.IdUser, f.DeletedDate }
join co in CON
on new { f.IdCla, DeletedDate = (DateTime?)null, f.IdUser }
equals new { co.IdCla, co.DeletedDate, co.IdUser } into lj
from l in lj.DefaultIfEmpty()