我需要在一个具有多个where条件的表上执行左外连接。我在我的选择上输入错误消息“在''上预期的上下文关键字'。在我的下面的代码我的第一个特定表的位置< strong> CourseDbset 我需要做一个左外连接。我的第二个地方应用于我的结果数据,根据状态值过滤数据。如果我不清楚,我道歉。
var StudentsInfo =(from user in context.aspnet_Users
join lc in context.class on
user.userId equals lc.userId
join course in context.CourseDbSet
.Where(o => o.courseId == sessionId && o.enrollId = sessionid
&& o.deptID == sessionoddeptid).DefaultIfEmpty()
select new
{
userid = user.UserId,
username = user.UserName,
status = course.status
}).Where(o => o.status == 0 || o.status == 3 || o.status == 4 || o.status is DBNull).ToList();
答案 0 :(得分:2)
你的第一次加入(这是正确的):
join lc in context.class
on user.userId equals lc.userId
那就是你的第二次加入(这是错误的):
join course in context.CourseDbSet
.Where( o => o.courseId == sessionId &&
o.enrollId = sessionid &&
o.deptID == sessionoddeptid ).DefaultIfEmpty()
// missing on statement
[on user.SOMETHING equals course.SOMETHING]
//编辑
Ups ..我错过了.DefaultIfEmpty()
电话。如果你想执行左连接,那么你需要一个类似的东西:
join course in context.CourseDbSet
.Where( o => o.courseId == sessionId &&
o.enrollId = sessionid &&
o.deptID == sessionoddeptid )
// missing on statement && left join
on user.SOMETHING equals course.SOMETHING
into courseJoinData
from courseJoinRecord in courseJoinData.DefaultIfEmpty( )