LINQ从基础到项目实战ppt课件(完整版).ppt
《LINQ从基础到项目实战ppt课件(完整版).ppt》由会员分享,可在线阅读,更多相关《LINQ从基础到项目实战ppt课件(完整版).ppt(231页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 LINQ概述本章简单介绍LINQ的概念、LINQ的设计目标以及LINQ的分类,通过3个使用LINQ的实例引领读者开始LINQ的学习。本章使用的实例代码运用了大量C#3.0语言的新特性,如对象和集合初始化器以及扩展方法等。读者在学习本章内容时,可不必太在意这些细节,将学习重点放在对LINQ的整体把握方面。章节内容1.1 什么是LINQ1.2 LINQ设计目标 1.3 LINQ的种类 1.4 LINQ应用实例 1.1 什么是LINQLINQ是Language Integrated Query的缩写,翻译成中文就是语言集成查询。LINQ是一系列的编程接口,借助于LINQ技术,可以使用一种统一
2、的方式查询各种不同类型的数据。LINQ是微软公司在Visual Studio 2008和.NET Framework 3.5版本中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。LINQ通过使用特定的语法,可以对数据库、对象以及XML等多种类型的数据进行查询操作。LINQ既可在新项目中使用,也可在现有项目中与非LINQ查询一起使用,唯一的要求是项目应面向.NET Framework 3.5版本。1.2 LINQ的设计目标LINQ采用一种开放性的设计架构,这种开放性不仅表现在其可以被多种.NET语言所支持,还表现在通过为不同类型的数据源开发相应的LINQ Provider,LINQ可
3、以在各种类型的数据源之间提供一个统一的访问接口。1.2 LINQ的设计目标LINQ的设计模型图 1.3 LINQ的种类LINQ to OBJECT LINQ to ADO.NET LINQ to XML 1.3.1 LINQ to OBJECT LINQ to OBJECT是用来访问对象集合的编程接口,对象集合里面的元素之间可以具有层次结构。在.NET中支持列举操作的各种对象类型,基本上都可以使用LINQ to OBJECT来进行操作。例如,可以使用LINQ to OBJECT来对一个整数类型数组中所有元素进行排序,也可以在一个自定义类型的集合中找出符合某些条件的元素子集合。1.3.1 LIN
4、Q to OBJECT 下面的代码实现了将一个整数类型数组numbers中所有元素按照从小到大的顺序排列,并放入集合items中的逻辑。/将一个整数类型数组numbers中所有元素按照从小到大的顺序排列,并放入集合items中using System;using System.Collections.Generic;using System.Text;using System.Linq;namespace Sample public class Test 1.3.1 LINQ to OBJECT static void Main(string args)/使用集合初始化器初始化整数类型数组nu
5、mbers int numbers=10,6,8,4,9,2,1,5,0;var items=from s in numbers orderby s select s;/输出结果 foreach(var item in items)Console.WriteLine(item);1.3.2 LINQ to ADO.NET LINQ to ADO.NET是用来访问关系模型数据的编程接口,其可以进一步分为LINQ to SQL、LINQ to Entities和LINQ to DataSet这3个子类别,每个子类别针对特定的关系模型数据。其中,LINQ to SQL在.NET自定义类型(class
6、)和数据库的物理表之间建立映射,通过操作自定义类型从而实现对数据库物理表的操作;LINQ to Entities与LINQ to SQL有相似之处,但是LINQ to Entities并不是直接在数据库物理表和自定义类型之间建立映射,而是采用了一个概念上的实体数据模型,这项技术目前还在持续的研发中,本书将不会涉及到LINQ to Entities的内容;LINQ to DataSet是使用LINQ来访问DataSet的接口。1.3.2 LINQ to ADO.NET 下面的代码实现了使用LINQ to SQL向数据库物理表中添加一条记录的逻辑。/使用LINQ to SQL向数据库物理表中添加一
7、条记录Book book=new Book();/生成一个实体类对象book.BOOKID=99;book.Book_Name=C#程序设计;book.Book_Author=张三;BookDataContext ctx=new BookDataContext();/只要与数据库通信,BookDataContext对象必不可少ctx.Book.InsertOnSubmit(book);/将需要修改的对象添加到BookDataContext对象中ctx.SubmitChanges();/通过BookDataContext对象将修改保存到数据库1.3.3 LINQ to XML LINQ to X
8、ML是用来访问XML数据的编程接口,XML目前已经成为被各种开发平台所支持的一种数据标准。关于XML,存在着各种各样的规格和模型,具体如下。XML Schema Definition(XSD):用来定义XML文档的结构。Extensible Stylesheet Language for Transformations(XSLT):将XML文档在不同的结构间转换。Document Object Model(DOM):用来管理在内存中的XML文档。Simple Object Access Protocol(SOAP):使用XML来实现平台间的互操作性。1.3.3 LINQ to XML 下面的代
9、码实现了使用LINQ to XML创建一个XML元素的逻辑。/使用LINQ to XML创建一个XML元素Books=new XElement(Books,new XElement(Book001,new XElement(Title,C程序设计),new XElement(Author,谭浩强),new XElement(Book002,new XElement(Title,算法与数据结构),new XElement(Author,张浩);1.4 LINQ应用实例本节将通过3个分别使用LINQ to OBJECT、LINQ to SQL和LINQ to XML的实例,初次体验LINQ的强大功
10、能以及使用LINQ的简单与高效。1.4.1 LINQ to OBJECT应用实例实例1-1将通过一个C#控制台应用程序来展示如何使用LINQ操作对象集合。运行Visual Studio 2008,新建项目,在打开的【新建项目】窗口的【项目类型】列表框中选择【Visual C#】,在【模板】列表框中选择【控制台应用程序】。注意,在【新建项目】窗口右上角的下拉列表框中选择【.NET Framework 3.5】平台类型,如图所示。1.4.1 LINQ to OBJECT应用实例【新建项目】窗口1.4.1 LINQ to OBJECT应用实例单击【确定】按钮后,在打开的Program.cs文件中输入
11、下面的代码。/LINQ to OBJECT实例代码using System;using System.Collections.Generic;using System.Linq;/使用Linq需引入的命名空间using System.Text;namespace sample1_1 class Program static void Main(string args)1.4.1 LINQ to OBJECT应用实例/使用集合初始化器构造一个数组greetings string greetings=hello,hello LINQ,how are you ;/使用var声明一个局部变量items
12、,变量类型自动识别 var items=from s in greetings /Linq关键字from、where和select where s.Length 10 /找出长度大于10的元素 select s;/输出满足条件的所有字符串 foreach(var item in items)Console.WriteLine(item);/为了方便看到输出结果 Console.ReadLine();1.4.2 LINQ to SQL应用实例实例1-2将通过一个C#Windows窗体应用程序来展示如何使用LINQ to SQL对数据库中的物理表进行操作。运行Visual Studio 2008,
13、新建项目,在打开的【新建项目】窗口的【项目类型】列表框中选择【Visual C#】,在【模板】列表框中选择【Windows窗体应用程序】。注意,在【新建项目】窗口右上角的下拉列表框中选择【.NET Framework 3.5】平台类型,如图所示。1.4.2 LINQ to SQL应用实例【新建项目】窗口1.4.2 LINQ to SQL应用实例单击【确定】按钮,打开Visual Studio 2008窗体设计器窗口,在打开的窗体中添加4个Button控件,控件名称分别为QueryButton、AddButton、ModifyButton和DeleteButton;然后向窗体添加一个DataGr
14、idView控件,控件名称为BookDataGridView。窗体布局如图所示。1.4.2 LINQ to SQL应用实例窗体布局1.4.3 LINQ to XML应用实例实例1-3将通过一个C#Windows窗体应用程序来展示如何使用LINQ对XML数据进行操作。运行Visual Studio 2008,新建项目,在打开的【新建项目】窗口中的【项目类型】列表框中选择【Visual C#】,在【模板】列表框中选择【Windows窗体应用程序】。注意,在【新建项目】窗口右上角的下拉列表框中选择【.NET Framework 3.5】平台类型,如图所示。1.4.3 LINQ to XML应用实例【
15、新建项目】窗口1.4.3 LINQ to XML应用实例单击【确定】按钮,打开Visual Studio 2008窗体设计器窗口,在打开的窗体中添加4个Button控件,控件名称分别为CreateXmlButton、ModifyXmlButton、SaveXmlButton和OpenXmlButton;然后向窗体添加一个TextBox控件,控件名称为XmlTextBox。窗体布局如图所示。1.4.3 LINQ to XML应用实例 窗体布局第3章 LINQ to OBJECT本章结合实例介绍LINQ to OBJECT编程接口,包括一些必要的基础知识和使用技巧等。LINQ to OBJECT允
16、许开发者使用LINQ对内存中的集合对象进行查询,这部分知识同时也是后面学习LINQ to SQL和LINQ to XML的基础,读者在学习时应重点掌握。章节内容3.1 LINQ to OBJECT基础3.2 延时标准查询操作符3.3 非延时标准查询操作符3.4 在ASP.NET和WinForm中使用LINQ to OBJECT3.1 LINQ to OBJECT基础 3.1.1 LINQ to OBJECT概述LINQ to OBJECT是用于操作内存对象的LINQ编程接口,包含了大量的查询操作符,针对内存中的集合对象进行操作。下面是一段使用标准查询操作符where和select对一个数组里面
17、的元素进行查询的代码。string greetings=hello,hello LINQ,how are you ;var items=from s in greetings where s.Length 10/where关键字是LINQ to OBJECT编程接口的标准操作符select s;/select关键字是LINQ to OBJECT编程接口的标准操作符/输出满足条件的所有字符串foreach(var item in items)Console.WriteLine(item);3.1.2 IEnumerable泛型接口、序列和标准查询操作符LINQ to OBJECT的实现基于IEn
18、umerable泛型接口、序列(sequences)以及标准查询操作符(Standard Query Operators)等基本概念。其中,IEnumerable泛型接口是使用C#2.0泛型技术实现的一个接口,该接口与IEnumerable类似,允许对接口内部的元素进行列举操作;序列是一个专门术语,表示一个实现了IEnumerable接口的集合对象。3.1.2 IEnumerable泛型接口、序列和标准查询操作符例如,下面的代码定义了一个内部元素为string类型的序列。/定义一个序列,使用泛型接口时类型T要明确指定具体类型IEnumerable strSequence;3.1.2 IEnum
19、erable泛型接口、序列和标准查询操作符LINQ to OBJECT的大部分操作是针对序列的。标准查询操作符本质上是一些扩展方法(Extension Methods),这些扩展方法定义在静态类System.Linq.Enumerable中,其原型的第一个参数(带this修饰符的参数)是IEnumerable类型。3.1.2 IEnumerable泛型接口、序列和标准查询操作符要在代码中使用LINQ to OBJECT标准查询操作符,需要在代码中添加using System.Linq指令,以引入必要的命名空间。标准查询操作符对象具体实现在System.Core.dll文件中,这个文件的引用会被
20、集成开发环境(如Visual Studio 2008)在每次新建工程时自动加入工程引用中。3.2 延时标准查询操作符延时标准查询操作符是指具备延时查询特性的标准查询操作符,这些操作符构成了LINQ to OBJECT编程接口的最主要内容。3.2.1 Where操作符Where操作符用于限定输入集合中的元素,将符合条件的元素组织生成一个序列结果。Where操作符的方法原型有两个,第一个方法原型定义如下。public static IEnumerable Where(this IEnumerable source,Func predicate);3.2.2 Select操作符Select操作符用于
21、根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中的元素类型相同,也可以不同。Select操作符的方法原型也有两个,第一个方法原型的定义如下。public static IEnumerable Select(this IEnumerable source,Func selector);3.2.3 SelectMany操作符SelectMany操作符用于根据输入序列中的每一个元素,在输出序列中创建相应的零个或者多个元素,与上一节Select操作符不同,Select操作符会根据输入序列中的每一个元素创建一个对应的输出序列元素,然而SelectMany操作符可以创建
22、多个。SelectMany操作符的方法原型有两个,第一个方法原型的定义如下。public static IEnumerable SelectMany(this IEnumerable source,FuncT,IEnumerable selector);3.2.4 Take操作符Take操作符用于从输入序列中返回指定数量的元素,其方法原型定义如下。public static IEnumerable Take(this IEnumerable source,int count);Take操作符接收一个输入序列参数source和一个整数类型参数count,count代表须返回的元素个数。当Take
23、操作符被调用时,将从输入序列source中第一个元素开始,顺序取count个元素一起组成一个新的序列作为结果返回。当count的值大于输入序列元素的个数时,将返回由输入序列中的所有元素所组成的新序列。3.2.5 TakeWhile操作符TakeWhile操作符用于从输入序列中返回指定数量且满足一定条件的元素,TakeWhile操作符有两个方法原型,第一个方法原型定义如下。public static IEnumerable TakeWhile(this IEnumerable source,Func predicate);3.2.6 Skip操作符Skip操作符用于从输入序列中跳过指定数量的元素
24、,返回由序列中剩余的元素所组成的新序列,其方法原型定义如下。public static IEnumerable Skip(this IEnumerable source,int count);Skip操作符接收一个整数类型参数用来指定需要跳过元素的个数,如果参数值大于输入序列元素的个数,Skip操作符返回一个空的序列。3.2.7 SkipWhile操作符SkipWhile操作符用于从输入序列中跳过满足一定条件指定数量的元素,与TakeWhile操作符类似,SkipWhile操作符有两个方法原型,第一个方法原型定义如下。public static IEnumerable SkipWhile(th
25、is IEnumerable source,Func predicate);3.2.8 Concat操作符Concat操作符用于连接两个序列,生成一个新的序列,其方法原型定义如下。public static IEnumerable Concat(this IEnumerable first,IEnumerable second);Concat操作符接收first和second两个输入序列,根据这两个序列中的元素,生成一个包含全部元素的新序列作为返回值。3.2.9 OrderBy操作符OrderBy操作符用于对输入序列中的元素进行排序,排序基于一个委托方法的返回值顺序,排序过程完成后,会返回一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINQ 基础 项目 实战 ppt 课件 完整版
限制150内