2

我正在尝试编写一个 linq to sql 语句,它将加入总共 3 个表。表 1 = 用户(用户 ID) 表 2 = 用户课程(用户 ID,课程 ID),表 3 = 课程(课程 ID)。

这就是我想要做的:

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

什么是正确的语法?

4

2 回答 2

4

假设您的密钥类型匹配,您就快到了。您只需要在子句中使用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 子句中使用相等运算符,但需要使用语言中其他任何地方都没有使用的关键字。这也意味着我们不能加入任意表达式。

于 2013-02-07T21:29:24.463 回答
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-示例-教程-示例-the-basic.aspx

于 2013-02-07T21:32:24.603 回答