zoukankan      html  css  js  c++  java
  • 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
                        };

      上述语句描述了选择同龄学生,并显示他们的姓名和年龄。

  • 相关阅读:
    高精度“+”算法
    漏洞扫描
    端口扫描
    使用sqlmap
    Kali实现靶机远程控制
    Docker下配置KeepAlive支持nginx高可用
    web攻防环境--一句话木马
    Docker容器技术--自定义网桥后的默认网卡名称
    小白大数据学习指南
    Nginx简单操作
  • 原文地址:https://www.cnblogs.com/xiaogui9527/p/2982320.html
Copyright © 2011-2022 走看看