日期:2014-05-17  浏览次数:20460 次

【求助】linq中怎么实现多条件关联的左连接???
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?就会产生错误