Я использую несколько соединений в заявлении и пытался выполнить для этого запрос linq-to-SQl, но безуспешно.
SELECT ur.UserName, ur.LandmarkRef, lt.Date, l.Place
FROM
tbl_Users ur
LEFT OUTER JOIN tbl_LandMarks l ON ur.LandmarkRef = l.LandMarkID
INNER JOIN tbl_LandmarkTypes lt ON l.LandmarkTypeRef equals lt.LandmarkTypeID
WHERE ur.UserId == pUserId
Ниже приведен запрос Linq-to-SQL, который не работает, если я использую LEFT OUTER JOIN.
UserDBDataContext lDc = new UserDBDataContext();
var lU= (from ur in lDc.tbl_Users
join l in lDc.tbl_LandMarks on ur.LandmarkRef equals l.LandMarkID into Lmark
from lmk in Lmark.DefaultIfEmpty()
join lt in lDc.tbl_LandmarkTypes on lmk.LandmarkTypeRef equals lt.LandmarkTypeID
where ur.UserId == pUserId
select new { ur.UserName, ur.LandmarkRef, lc.Date, lmk.Place});
Здесь Landmark на самом деле является необязательным полем, поэтому оно может иметь значение NULL, поэтому в этом случае соединение LEFT не работает и не возвращает строку из-за значения NULL в Landmark. который работает в SQL, но не в LINQ-to-SQL.