【原创】LINQ to SQL学习笔记(四)——Join(1)
本篇将介绍Join操作符的使用,Join操作符类似于SQL命令中的join关键字,都是用于进行表连接操作的,实现多个表之间的查询处理,当然此处的多表也包含自身与自身的连接。
Join操作符的使用包括三类,分别为Join(Join查询),SelectMany(Select一对多选择)和GroupJoin(分组Join查询)。
1、SelectMany
SelectMany查询需要满足两个条件,1、查询语句中没有Join和into关键字,2、必须出现EntitySet。在表关系中包括一对一、一对多、多对多关系。
(1)一对多关系
一对多的关系可以理解成一个A对应多个B,例如一个班级对应多个学生。
1 2 3 4 | var query = from class in db.Classes from stu in class .Students where class .Grade == 5 select stu; |
上述语句描述Grade值等于5的班级的所有学生。在查询过程中,Students以EntitySet的形式出现在Classes类中。
(2)多对多关系
多对多的关系可以理解成一个A对应多个B,同时一个B又对应多个A。例如学生与课程之间的关系,一个学生可以选择多门课程,一门课程可以被多个学生选择。对应于多对多的关系,一般使用三张表来描述,两张实体表,一张关系表。
1 2 3 4 5 6 7 8 | var query = from s in db.Students from ss in s.StudentCources where s.Age == 20 select new { s.FirstName, s.LastName, ss.Cources.Cource.Name }; |
上述语句描述年龄为20岁的学生选择的课程名称和学生姓名。
(3)自连接关系
自连接关系描述的就是自己与自己进行连接,根据某个相同信息进行筛选。例如:
1 2 3 4 5 6 7 8 9 10 | var query = from s1 in db.Students from s2 in db.Students where s1.Age == s2.Age select new { FirstName1=s1.FirstName, LastName1 = s1.LastName, FirstName2=s2.FirstName, LastName2 = s2.LastName, s1.Age }; |
上述语句描述了选择同龄学生,并显示他们的姓名和年龄。
总结:
本篇仅介绍了SelectMany形式的Join使用,并通过举例讲述了SelectMany中的三种不同表现形式。下篇将对GroupJoin形式进行介绍。
本文出自 “1Q84mi” 博客,请务必保留出处
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步