将trans-sql转换为LINQ LEFT JOIN和Where子句

时间:2015-02-16 16:12:41

标签: c# sql linq tsql sql-server-2012

您如何将此trans-sql转换为LINQ?

我已经使用DefaultIfEmpty()尝试了它,但它似乎对我不起作用。 任何帮助表示赞赏。

SELECT s.Status 
FROM EducationModule M 
     LEFT JOIN EducationModuleStatus S ON  M.CourseID = S.CourseID 
               AND M.ModuleID = S.ModuleID 
               AND S.StudentID = '1506' 
WHERE M.courseid = 2

提前致谢。

1 个答案:

答案 0 :(得分:0)

加入Linq to SQL中的多个列有点不同。 您必须利用匿名类型并为要比较的多个列组成一个类型,在工作表下,这将生成您要查找的连接类型。

var abcd = from tl in db.EducationModule
            join s  in db.EducationModuleStatus 
            on new { t1.CourseID, t1.ModuleID } equals new {s.CourseID, s.ModuleID}    
            into tl_s
            where tl.CourseID == 2 AND s.StudentID == '1506'     
            from s in tl_s.DefaultIfEmpty()
            select new
            {
               Status = s.Status
             };