我正在尝试将linq写入sql语句,该语句将加入总共3个表。表1 =用户(userId)tabe 2 = userCourses(userId,CourseId),表3 =课程(courseId)。
这就是我想要做的事情:
from u in db.Users join uc in userCourse on u.userId = uc.Id
join c in course on uc.courseId = c.courseId
where u.userId = uc.userId
select c.name
正确的语法是什么?
答案 0 :(得分:3)
假设您的密钥类型匹配,那么您就在那里。您只需要在equals
子句中使用join
关键字:
from u in db.Users join uc in userCourse on u.userId equals uc.Id
join c in course on uc.courseId equals c.courseId
where u.userId = uc.userId
select c.name
这是LINQ略显奇怪的少数几个地方之一,因为我们不能在join子句中使用相等运算符,但需要使用该语言中其他地方未使用的关键字。这也意味着我们无法加入任意表达式。
答案 1 :(得分:1)
尝试
from u in db.Users
join uc in userCourse on u.userId equals uc.Id
join c in course on uc.courseId equals c.courseId
where u.userId = uc.userId
select c.name
另请参阅以下链接