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-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 join не работает и не возвращает строку из-за значения NULL в Landmark. который работает в SQL, но не работает в LINQ-to-SQL.

1
задан Azhar 26 September 2010 в 04:29
поделиться