LINQ左外連線

2021-08-09 15:20:10 字數 1730 閱讀 3997

左連線或左外連線:包含左邊的表的所有行,如果右邊表中某行沒有匹配,該行內容為空null。

sql語句select * from dbo.project left join dbo.voice on (dbo.project.voiceid=dbo.voice.id)

看一下網上的linq語句例子:左連線

var userinfo=from s in db.project

join c in db.voice on s.voiceid equals c.id into projectv

from pv in projectv.defaultempty()  //???

select new ;

我實在是不知道pv代表的什麼意思?

再來對比一下例子。沒有左外連線

list = (from u in dbcontext.t_announce

join a in dbcontext.t_user on u.userid equals a.userid

join b in dbcontext.t_type on u.typeid equals b.type_id

join u2 in dbcontext.t_user on u.memberid equals u2.userid

join u3 in dbcontext.t_user on u.operateid equals u3.userid

where (u.departmentid == announce.departmentid && u.typeid == announce.typeid)

orderby u.date descending

select new gainviewmodel()

).tolist();

有左外連線

list = (from u in dbcontext.t_announce

join a in dbcontext.t_user on u.userid equals a.userid

join b in dbcontext.t_type on u.typeid equals b.type_id

join u2 in dbcontext.t_user on u.memberid equals u2.userid

join u3 in dbcontext.t_user on u.operateid equals u3.userid into joinedempdept

from u3 in joinedempdept.defaultifempty()

where (u.departmentid == announce.departmentid && u.typeid == announce.typeid)

orderby u.date descending

select new gainviewmodel()

).tolist();

關鍵在這
join u3 in dbcontext.t_user on u.operateid equals u3.userid into joinedempdept  

from u3 in joinedempdept.defaultifempty()

效果

LINQ 內連線和左外連線

使用join子句可以根據特定的條件合併兩個資料來源,但之前要獲得兩個要連線的列表。在一級方程式比賽中,有賽車手冠軍和車隊冠軍。賽車手從getchampions 方法中返回,車隊從getconstructorchampions 方法中返回。現在要獲得乙個年份列表,列出每年的賽車手冠軍和車隊冠軍。為此,...

左連線 左外連線 右外連線

在之前,我對mssql中的內連線和外連線所得出的資料集不是很清楚。這幾天重新溫習了一下sql的書本,現在的思路應該是很清楚了,現在把自己的理解發出來給大家溫習下。希望和我一樣對sql的連線語句不太理解的朋友能夠有所幫助。發這麼菜的教程,各位大大們別笑話偶了,呵 d 有兩個表a和表b。表a結構如下 a...

linq實現左連線

1 左連線 var leftjoin from emp in listofemployees join dept in listofdepartment on emp.deptid equals dept.id into joinedempdept from dept in joinedempdep...