c# - 使用 lambda 表达式连接 3 个表?

标签 c# .net wpf c#-4.0 lambda

我基本上希望将以下 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/

相关文章:

wpf - MVVM和SettingsBase

c# - 播放数组中的声音会返回错误C#-Visual Studio

c# - 为特定请求禁用 ASP.NET session 刷新

c# - C# 中的 WebRequests 是非常 CPU 密集型的。需要更好的东西

c# - 如何编辑 resx 文件(资源键值)运行时 wpf c#

.net - 我可以将 Azure 移动服务与 Unity 3d 结合使用吗?

c# - 将文本框中的空格显示为不同的字符

c# - 日期对象与日期时间对象

c# - 枚举作为类属性

c# - 满足此要求的 WPF 控件或方法是什么?