我基本上希望将以下 sql 查询作为 lambda 表达式:
SELECT studentname, coursename, grade
FROM student S, course C, grade G
WHERE S.id = G.studentid AND C.coursecode = G.coursecode AND G.grade<='B';
我遇到了麻烦,因为我必须将 3 个表连接在一起。
最佳答案
嗯,这看起来像这样作为查询表达式:
var q = from grade in db.Grades
where grade.grade <= 'B'
join student in db.Students on grade.studentid equals student.studentid
join course in db.Courses on grade.coursecode equals course.coursecode
select new { student.studentname, course.coursename, grade.grade };
(我通常使用变量名 query
而不是 q
- 我只是在这里使用 q
来格式化。 )
您可以将其转换为使用 lambda 表达式的显式 Join
调用,但我强烈建议您对这样的复杂查询使用查询表达式。
请注意,我已经更改了查询的顺序,以便尽可能简单有效地表达“where”子句。无论如何,SQL 查询规划器很可能会优化它,但对于像 LINQ to Objects 这样的东西,这会有所帮助。
关于c# - 使用 lambda 表达式连接 3 个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050294/