.net LINQ到SQL-具有多个内部联接的左外部联接

.net LINQ到SQL-具有多个内部联接的左外部联接,.net,linq,linq-to-sql,join,left-join,.net,Linq,Linq To Sql,Join,Left Join,我在一个语句中使用了多个连接,并尝试对此进行linq到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

我在一个语句中使用了多个连接,并尝试对此进行linq到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查询,如果使用左外部联接,则该查询不起作用

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,因此在这种情况下,由于Landmark中的NULL值,LEFT join不起作用,并且不返回任何行。它在SQL中工作,但在LINQ to SQL中不工作。

看起来您可能需要使用
语法将第二个联接也设置为左外联接