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” 博客,请务必保留出处
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值