用lambda表达式连接3个表?

Ola*_*Ola 4 .net c# wpf lambda c#-4.0

我基本上希望以下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';
Run Code Online (Sandbox Code Playgroud)

我遇到麻烦,因为我必须一起加入3张桌子.

Jon*_*eet 5

嗯,看起来像这样的查询表达式:

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 };
Run Code Online (Sandbox Code Playgroud)

(我通常使用变量名query而不是q- 我在q这里仅用于格式化目的.)

可以将其转换为Join使用lambda表达式的显式调用,但我强烈建议您对这样的复杂查询使用查询表达式.

请注意,我已经更改了查询的顺序,以允许"where"子句尽可能简单有效地表达.很可能SQL查询规划器无论如何都会优化它,但对于像LINQ to Objects这样的东西,这会有所帮助.