1、左连接:
var LeftJoin = from e in ListOfEmployees
join d in ListOfDepartment
on e.DeptID equals d.ID into JoinedEmpDept
from d in JoinedEmpDept.DefaultIfEmpty()
select new
{
EmployeeName = e.Name,
DepartmentName = d!= null ? d.Name : null
};
2、右连接:
var RightJoin = from d in ListOfDepartment
join e in ListOfEmployees
on d.ID equals e.DeptID into joinDeptEmp
from e in joinDeptEmp.DefaultIfEmpty()
select new
{
EmployeeName = e!= null ? e.Name : null,
DepartmentName = d.Name
};
3、内连接:
三个表链表查询
var list = (
from u in dc.userinfos
join j in dc.jobs on u.job equals j.jid into j_join from x in j_join.DefaultIfEmpty() join c in dc.cities on u.city equals c.cid into c_join from v in c_join.DefaultIfEmpty() select new { id = u.id, name = u.name, jname = x.jname, cname = v.cname, //不要用对象的方式 因为对象可能为null那么对象.属性就会抛异常 } ).ToList();