1

次の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

さらに、変換しようとしましたがWHERE、LINQで内部を使用して結合句を作成することは不可能のようです(Linqerは私にそれを教えてくれました.Linqpadは無料版でSQLからLINQに変換できないようです)

手がかりを教えていただけますか?

どうもありがとう

4

1 に答える 1

2

このようなものを探していると思います。必要なものを引き出すことができるように、select 句を省略しました。注意事項:

  • 複数の列を結合するには、匿名型を作成します。匿名型のフィールド名は一致する必要があります。
  • 条件を作成する=NULLには、他のエンティティのフィールド名と一致する変数名を作成します。設定し=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()
于 2014-06-24T21:53:32.923 に答える