- C# code
var data = from c in db.T_COURSE join u in db.T_USER_COURSE_RECORD on new { COURSE_ID=c.COURSE_ID, USER_ID=userId } equals new { COURSE_ID=u.COURSE_ID,USER_ID=u.USER_ID } into x from cx in x.DefaultIfEmpty() select new { c.COURSE_NAME, cx.COURSE_ID, cx.USER_COURSE_ID, cx.USER_ID, SCORE = cx.SCORE == -1 ? "未完成" : (cx.SCORE == null ? "未完成" : cx.SCORE.ToString()) };
上面的userId是传入的参数,报错了说我join其中一个表达式的类型不正确。。。。
对应sql语句:
SELECT * FROM T_COURSE a left join T_USER_COURSE_RECORD tucr ON a.COURSE_ID=tucr.COURSE_ID
and tucr.[USER_ID]=@userId
哪里有问题??希望高手帮忙解答~谢谢
------解决方案--------------------------------------------------------
on new { COURSE_ID=c.COURSE_ID, USER_ID=userId }
equals new { COURSE_ID=u.COURSE_ID,USER_ID=u.USER_ID }
你应该确保组合键对应值的返回类型是一致的
int 对 int?就会产生错误