私はconveryにC#LINQ joinへのSqlクエリをしようとしています。私は試みましたが、私はこれを達成できませんでした。 SQLのこの対応するクエリはそのままで動作します:C#でLinqを使ってSqlで条件付き結合を行うには?
SELECT pj01.CLID from us20
INNER JOIN pj01 ON pj01.PJID =
(
CASE
WHEN (us20.BKNM = 'PJID')
THEN us20.BKID
WHEN (us20.BKNM = 'PSID')
THEN
(
SELECT PJID FROM pj02 WHERE CLID = us20.CLID AND PSID = us20.BKID
)
END
)
動作しません。私のLINQの試み、 - データが付属していません:
var result =
from us20 in Us20Repository.GetAll()
join pj01 in Pj01Repository.GetAll() on new
{
PJID =
(us20.BKNM == "PJID" ?
us20.BKID :
(
us20.BKNM == "PSID" ?
(
(from pj02 in Pj02Repository.GetAll()
where
pj02.CLID == us20.CLID &&
pj02.PSID == us20.BKID
select new
{
PJID = pj02.PJID
}).First().PJID
) :
""
)
)
} equals new { PJID = pj01.PJID }
select new
{
CLID = pj01.CLID
};
はどうすればこれを行うことができますか?これは可能ですか?
クエリが生成されたら、 'result'にカーソルを合わせて生成したSQLを表示できますか? – Rob
SQLクエリで23,000行のデータ(data = "100")、Linq:0 –
私は結果が*実現される*前のことを意味しました。それはあなたにSQLを表示するはずです( 'ToList()'やその他のマテリアライゼーションメソッドを呼び出さないでください)。それを 'IQueryable'のままにして、それを調べます。 – Rob