【发布时间】:2015-09-21 02:29:43
【问题描述】:
我正在尝试使用 linq 从左外连接获取结果集。下面是我的sql语句
select
cra.room_number,HERS_SCHEDULE_ID,hs.HES_AVAILABLE_DATE,USERS.USER_FNAME
from coded_room cra
left outer join HE_REGULAR_SCHEDULE hrs
on cra.room_number = hrs.hers_room_number
left outer join HE_SCHEDULE hs
on hs.HES_SCHEDULE_ID= hrs.HERS_SCHEDULE_ID
left outer join USERS
on hs.HES_HE_ID = USERS.USER_ID
where cra.ROOM_borough_id = 3
输出
room_number HERS_SCHEDULE_ID HES_AVAILABLE_DATE USER_FNAME
1 285 2015-09-18 00:00:00.000 john
2 287 2015-09-18 00:00:00.000 david
3 NULL NULL NULL
我使用 Linq 的尝试
from coded_room cr in Context.coded_room
join hereg in Context.HE_REGULAR_SCHEDULE on cr.room_number equals hereg.HERS_ROOM_NUMBER into leftjoin1
from x in leftjoin1.DefaultIfEmpty()
join he in Context.HE_SCHEDULE on x.HERS_SCHEDULE_ID equals he.HES_SCHEDULE_ID into leftjoin2
from y in leftjoin2.DefaultIfEmpty()
join userlinq in Context.USERS on y.USERS.USER_ID equals userlinq.USER_ID into leftjoin3
from z in leftjoin3.DefaultIfEmpty()
where cr.ROOM_borough_id == borough && y.HES_AVAILABLE_DATE == d
select new HE_SCHEDULEDTO { RoomNumber = cr.room_id,UserName = z.USER_LNAME};
我的 Linq 的输出
room_number HERS_SCHEDULE_ID HES_AVAILABLE_DATE USER_FNAME
1 285 2015-09-18 00:00:00.000 john
2 287 2015-09-18 00:00:00.000 david
我想要什么?
我想要一些指针来修改上面的 linq 查询以给出输出。请参阅上面的sql查询以供参考
room_number HERS_SCHEDULE_ID HES_AVAILABLE_DATE USER_FNAME
1 285 2015-09-18 00:00:00.000 john
2 287 2015-09-18 00:00:00.000 david
3 NULL NULL NULL
【问题讨论】:
-
y.HES_AVAILABLE_DATE == d在这一行中,您携带的是日期。我猜你必须在 Where 子句中携带当前日期作为过滤器。现在日期不能等于 null 所以要么是 MinDate , Maxdate 要么简单的 Date 因此您没有将第三行设为 null。
标签: c# asp.net sql-server linq