代码之家  ›  专栏  ›  技术社区  ›  Azhar

LINQ to SQL-具有多个内部联接的左外部联接

  •  1
  • Azhar  · 技术社区  · 14 年前

    我在一个语句中使用了多个连接,并尝试对此进行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 
    

    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 join不起作用,并且由于Landmark中的NULL值而不返回任何行。它在SQL中工作,但在linqtosql中不工作。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    7 年前

    看起来可能还需要使用 into 语法。

    See this example.