SQLクエリは次のとおりです。
Select distinct A.CategoryName, A.CategoryID, B.ProjectID
from [EvalTool].[dbo].[Category] A
Left Join [EvalTool].[dbo].[CategoryAndProject2] B
On A.CategoryID = B.CategoryID AND B.ProjectID = 65
そしてうまくいけば等しいlinqステートメント:
int pID = (int)Session["projectSession"];
ViewData.Model = (from c in _db.Category
join r in _db.CategoryAndProject2
on c.CategoryID equals r.CategoryID into join1
from j in join1.DefaultIfEmpty()
where j.ProjectID == pID
select new CategoryDTO
{
CatID = c.CategoryID,
CatName = c.CategoryName,
ProjID = (int) j.ProjectID
}).Distinct().ToList();
SQL ステートメントの結果は次の表になります。
CategoryName ID ProjectID
- - - - - - - - - - - - - - - - - -
x 1 NULL
y 2 NULL
z 3 NULL
m 4 NULL
n 5 NULL
i 6 NULL
o 7 NULL
r 8 NULL
s 9 65
u 10 65
一方、linq ステートメントは、null エントリのない 2 つの行のみをリストします。
CategoryName ID ProjectID
- - - - - - - - - - - - - - - - - -
s 9 65
u 10 65
しかし、ビューに null エントリを持つ行が必要です。
それらも確実に選択するにはどうすればよいですか?
どうもありがとう マーク