12 linq
Download
1 / 22

第 12 章 LINQ 基 础 - PowerPoint PPT Presentation


  • 283 Views
  • Uploaded on

第 12 章 LINQ 基 础. 第 12 章 LINQ 基 础. 本章主要内容包括: 1.1 LINQ 操作数据库原理 1.2  在项目中添加数据库映射类 1.3 LINQ 查询语法 ( 重点) 1.4 Lambda 表达式 (难点) 1.5 使用 LINQ 操作数据库 (实用). 12.1 什么是 LINQ. LINQ ( Language Integrated Query ) ,即“语言集成查询” , 架构如图. 12.2 LINQ 操作数据库原理.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第 12 章 LINQ 基 础' - poppy


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
12 linq

12章 LINQ 基 础


12 linq1
12章 LINQ 基 础

  • 本章主要内容包括:

    • 1.1LINQ操作数据库原理

    • 1.2 在项目中添加数据库映射类

    • 1.3 LINQ查询语法 (重点)

    • 1.4 Lambda表达式 (难点)

    • 1.5 使用LINQ操作数据库(实用)


12 1 linq
12.1 什么是 LINQ

  • LINQ(Language Integrated Query) ,即“语言集成查询”,架构如图


12 2 linq
12.2 LINQ操作数据库原理

  • LINQ to SQL 是 .NET Framework 3.5的一个组件,用于将关系数据作为对象管理。

  • 由LINQ to SQL构建“LINQ to SQL对象模型”,由“LINQ to SQL运行时”负责操作数据库。

  • LINQ to SQL会自动将LINQ to SQL语言转换成数据库的语言与数据库进行通信。


12.3 在项目中添加数据库映射类

  • 步骤如下:

    (1)添加 “LINQ to SQL类” 。

    (2)新建一个App_Code目录

    (3)进入“对象关系设计器”(O/R设计器)。

    (4)从“服务器资源管理器”中的School数据中选择数据表、存储过程到O/R设计器,创建映射到数据表的对象模型,即数据库映射类(后缀名为dbml)。

  • DBML是Database Mark Language的简写,是一种基于XML的数据库标记语言。


12 4 linq
12.4 LINQ查询语法

  • LINQ支持大量的查询操作符:选择、排序、筛选数据、聚合计算等关键字

  • 使用上下文类DataClassesDataContext建立实例db,以便进行各项LINQ操作,代码如下:

    DataClassesDataContext db = new DataClassesDataContext();


  • 1.select

    • 从查询的源中检索出指定对象。例:获取Movies(电影表)所有的记录:

      var m = from a in db.Moviesselect a;

      a可以理解为数据源db.Movies的一个别名

    • 注:var用来定义可枚举集合类型,对象类型是匿名的。


  • 2.where

    • 筛选条件

    • 例:获取所有价格大于20的Movies:

      var m = from a in db.Movies

      where a.Price > 10 select a;


  • 多个字段查询,使用SELECT创建新对象保存查询结果

    var m = from a in db.Movies

    where a.Price > 10 select new{a.ID, a.Title,a.Price};

    select new {…} 是C#3.0匿名类型。


  • 3.from

    • 定义了要查询的数据源,即给数据源定义一个别名


  • 4.orderby

    • 对结果集合进行排序操作:ascending、descending。

    • 例:从电影表获取全部数据,根据ReleaseDate(电影发行时间)降序排序:

      var m = from a in db.Movies

      orderby a.ReleaseDate descending

      select a;


  • 5.集合运算

    • Count()、Sum、Min、Max和Average

    • 例:获取Genre(类别)的值为“战争”的电影的数量:

      var mCount = (from a in db.Movies

      where a. Genre == ‘战争’

      select a).Count();


  • 6.Take和Skip

    • Take类似于SQL里的TOP,返回需要的数据记录,而Skip的作用刚好相反。

    • 例:获取第6~10条间的5条电影数据:

      var m = db.Movies .Skip(5).Take(5);

      Skip(5)跳过前5条数据,Take(5)获取接下来的5条数据


  • 7.Single和First

    • 都是获取数据集合中的一个元素,如果集合为空都会抛出异常。

    • 它们的区别:用Single的前提是查询只会返回一条记录的集合,否则会抛出异常。First获取集合的第一个元素。


  • 例如,获取ID的值为“2”的第一条电影:

    var m = (from a in db.Movies

    where a.ID == 2 //这里换成Single作用是一样的

    select a).First(); //因为ID是主键,不可能重复

  • 如果改变where的条件:

    var m = (from a in db.Movies

    where a.ID >= 2 //这样返回的数据可能不止一条

    select a).First(); //如果换成Single就可能出现异常


12 5 lambda
12.5 Lambda表达式

  • Lambda表达式是能返回一个方法的表达式

  • 普通方法由4个部分构成:返回类型、方法名、参数列表和方法主体。

  • Lambda表达式只有两部分:参数列表和方法主体,返回的是一个匿名方法,返回类型则从表达式的上下文推导得到。

  • Lambda表达式的书写格式如下:

    (参数列表) => 表达式或者语句块

    其中:

    • =>操作符:告诉编译器这是一个Lambda表达式。

    • =>的左边:参数列表。

    • =>的右边:方法主体。


  • 例:

    x => x * 2 //返回参数x的两倍

    x => { x * 2; } //方法的主体是一个代码块

    总的来说,Lambda表达式就是为了简化匿名方法。


  • 前一节的查询例子可以使用Lambda表达式:

    • 获取电影表Movies所有的记录:

      var m = db.Movies .Select(a => a);

    • 获取所有价格大于10电影:

      var m = db.Movies.Where(a => a.Price > 10).Select(a => a);


  • 获取根据ReleaseDate降序排序的电影表:

    var m = db.Movies.OrderByDescending(a=>a. ReleaseDate);

  • 获取Genre的值为“战争”的电影的数量:

    var m = db.Movies.Count(a => a.Genre == ‘战争’);

  • 获取ID的值为2的第一条电影:

    var m = db.Movies.First(a => a.ID == 2);


12 6 linq
12.6 使用LINQ操作数据库

  • LINQ对数据库的操作是完全对类的方法的调用。

  • 常见操作:查询、插入、删除、修改和调用存储过程。

    首先建立LINQ to Entity上下文类的实例

    MovieDBContext db = new MovieDBContext();


  • 1、查询所有的喜剧电影

    var m = from u in db. Movies where u. Genre == ‘喜剧’ select u;

  • 2、添加一条新的电影记录

    Movie m = new Movie();

    m.Title = “泰囧";

    m.ReleaseDate = DateTime.Parse("2012-12-12");

    m.Price = 60m;

    m.Genre = "喜剧";

    db.Movies.Add(m); //保存插入的数据到数据库

    db.SaveChanges(); //提交修改到数据库


  • 3、删除一条记录

    var movie = db.Movies.Find(id); //获取一条数据

    db.Movies.Remove(movie); //删除该数据

    db.SaveChanges(); //提交删除到数据库

  • 4、修改一条记录

    Movie m = db.Movies.Where(a => a.Title == “泰囧").First();//获取第一条数据

    movie.Title = “王的盛宴"; //修改Title

    db. SaveChanges(); //提交修改到数据库


ad