Linq语句单表查询和多表查询

Linq语句单表查询和多表查询

一.Linq语句单表与多表查询数据库数据
类如下列给出的四个表进行查询
学生表:姓名,性别,学生ID,学院ID,年级ID,班级ID
学院表:学院名称,学院ID,年级ID,班级ID
年级表:年级,年级ID,班级ID
班级表:班级名称,班级ID

在查询之前要先将需要查询的数据库的表映射到项目的模型(Models)中
然后在控制器写查询方法前将映射在模型(Models)的表实例化(要先实例化才能对表的数据查询)
Models.CQUPTEntitify(映射过来命的名称) mymodels(实例化重命的名称)
=new Models.CQUPTEntitify();

  1. 单表查询学生表
    (from、select是查询的标志意思是从…中查询,tbStudent in mymodels. 学生表
    意思是将学生表重命名为tbStudent来使用
    整个意思就是从学生表中查询数据再赋值给变量listStudent)
    var listStudent=from tbStudent in mymodels. 学生表
    select new{
    xm=姓名,
    xb=性别,
    xsID=学生ID,
    xyID=学院ID,
    njID=年级ID,
    bjID=班级ID
    };
    select new{}里面是学生表的所有字段需要什么就查什么
    上面的写法是针对封装的方法需要通过参数来调用相应字段的数据的
    也可以直接查询整个表如下:
    var listStudent=from tbStudent in mymodels.学生表
    select tbStudent;
    上面是查询的文字分析,下图就是单表查询代码的截图
    Linq语句单表查询和多表查询_第1张图片

  2. 多表查询数据(所有表)
    (join、on、equals是连表的标志)
    var listStudent=(from tbStudent in mymodels. 学生表
    join tbAcademe in mymodels. 学院表 on tbStudent. 学院ID equals tbAcademe. 学院ID
    join tbGrade in mymodels.年级表 on tbAcademe.年级ID equals tbGrade.年级ID
    join tbClass in mymodels.班级表 on tbGrade.班级ID equals tbClass.班级ID
    select new{
    StudentName=tbStudent.StudentName,
    Academe=tbAcademe.AcademeName,
    Grade=tbGrade.GradeName,
    Class=tbClass.ClassName,
    StudentID=tbStudent.studentID,
    AcademeID=tbAcademe.AcademeID,
    GradeID=tbGrade.GradeID,
    ClassID=tbClass.ClassID
    }).ToList();(ToList()是将数据形成列表,需要用列表来接收数据就要设置这方法)
    多表查询又称连表查询就是通过多张表的对应条件将表进行连接查询
    这样就可以查询出多张表的数据和关系拿来运用
    Join后面接的是需要连接的表
    on后面接的是连接表的条件
    equals是相同的意思
    列如tbStudent. 学院ID equals tbAcademe. 学院ID就是通过两张表的ID相同来进行连接的
    上面是查询的文字分析,下图就是多表查询代码的截图
    Linq语句单表查询和多表查询_第2张图片

你可能感兴趣的:(Linq语句单表查询和多表查询)