1
我在一个语句中使用多个联接,并试图使linq-to-SQl查询,但没有成功。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到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});
不工作在这里置地实际上是一个可选字段,因此它可能为空,因此在这种情况下LEFT由于Landmark中的NULL值,连接不起作用并且不返回任何行。它在SQL中工作,但不在LINQ-to-SQL中。