Linq to sql double inner join语句

时间:2013-02-07 21:26:09

标签: sql linq-to-sql

我正在尝试将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

正确的语法是什么?

2 个答案:

答案 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

另请参阅以下链接

https://web.archive.org/web/20101030154925/http://blogs.msdn.com/b/tikiwan/archive/2010/06/18/linq-to-sql-inner-join-left-join-examples-tutorial-samples-the-basic.aspx