将SQL查询转换为LINQ查询



我有以下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,但我对LEFT JOIN和LINQ的"临时表"绝对不放心。

此外,我试图转换它,但似乎不可能在LINQ内部创建一个WHERE的连接子句(Linqer告诉我,Linqpad似乎无法在免费版本中从SQL转换到LINQ)

你能给我提示一下吗?

Thanks to lot

我想你正在寻找这样的东西。我省略了select子句,这样你就可以选择你需要的了。注意事项:

  • 要连接多个列,请创建匿名类型。匿名类型中的字段名必须匹配。
  • 创建=NULL条件,创建与另一个实体中的字段名匹配的变量名。将其设置为=null,但将其强制为您将其设置为等于的字段的可空数据类型。

编辑:更新查询,移动where子句到join

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()

相关内容

  • 没有找到相关文章

最新更新