linq 左连接,右连接,内连接,三表左连接
2022-03-11 21:13 idea555 阅读(263) 评论(0) 收藏 举报左连接
List<Employees> emp = new List<Employees>()
{
new Employees {id = 1,depid = 1,name = "小李" },
new Employees {id = 2,depid = 2,name = "小张" },
new Employees {id = 3, depid = 3, name = "小陈" }
};
List<Department> dept = new List<Department>()
{
new Department {id = 1, title = "财务"},
new Department {id = 2, title = "人事"}
};
var list = from a in emp
join b in dept on a.depid equals b.id into joinEmpDept
from b in joinEmpDept.DefaultIfEmpty()
select new
{
a.name,
title = b == null ? "" : b.title,
Bid = b == null ? 0 : b.id,
};
foreach (var item in list)
{
Console.WriteLine("name:{0},dept:{1},Bid:{2}",item.name,item.title,item.Bid);
}
右连接
var list = from a in dept
join b in emp on a.depid equals b.id into joinEmpDept
from b in joinEmpDept.DefaultIfEmpty()
select new
{
a.name,
title = b == null ? "" : b.title,
Bid = b == null ? 0 : b.id,
};
内连接
var list = from a in emp
join b in dept on a.depid equals b.id
select new
{
a.name,
title = b.title,
Bid = b.id,
};
三表左连接
var list = from a in db.tableInfos1
join b in db.tableInfo2 on a.ID equals b.Id into bb
from bbdata in bb.DefaultIfEmpty()
join c in db.tableInfos3 on a.EID equals c.Id into cc
from ccdata in cc.DefaultIfEmpty()
select new
{
info1=a,
info2 = bbdata ,
info3 = ccdata
};
浙公网安备 33010602011771号