通常的外连接写法
var result = from s in db.Student
join c in db.Classx
on s.ClassID equals c.ID into temp
from p in temp.DefaultIfEmpty()
select new { s, p };
var res = result.ToList();Code language: JavaScript (javascript)
这是标准的
Group Join+DefaultIfEmpty()写法,等效 SQLLEFT JOIN,左表(Student)所有记录都保留,右表匹配不到则为null。
更紧凑的写法
var result2 = from s in db.Student
from c in db.Classx.Where(item => item.ID == s.ClassID).DefaultIfEmpty()
select new { s, c };
var res2 = result2.ToList();Code language: JavaScript (javascript)
将
Where条件直接写在from子查询中,配合DefaultIfEmpty()实现左连接。代码更紧凑,生成的 SQL 与第一种写法基本一致。
Previous: 交叉连接、全连接、外连接与自连接