LINQ从基础到项目实战ppt课件汇总全套ppt完整版课件最全教学教程整套课件全书电子教案全套.ppt

上传人:可****阿 文档编号:76341553 上传时间:2023-03-09 格式:PPT 页数:231 大小:3.62MB
返回 下载 相关 举报
LINQ从基础到项目实战ppt课件汇总全套ppt完整版课件最全教学教程整套课件全书电子教案全套.ppt_第1页
第1页 / 共231页
LINQ从基础到项目实战ppt课件汇总全套ppt完整版课件最全教学教程整套课件全书电子教案全套.ppt_第2页
第2页 / 共231页
点击查看更多>>
资源描述

《LINQ从基础到项目实战ppt课件汇总全套ppt完整版课件最全教学教程整套课件全书电子教案全套.ppt》由会员分享,可在线阅读,更多相关《LINQ从基础到项目实战ppt课件汇总全套ppt完整版课件最全教学教程整套课件全书电子教案全套.ppt(231页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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操作符用于对输入序列中的元素进行排序,排序基于一个委托方法的返回值顺序,排序过程完成后,会返回一个

26、类型为IOrderedEnumerable的集合对象。其中,IOrderedEnumerable接口实现了IEnumerable接口。OrderBy操作符有两个方法原型,第一个方法原型定义如下。public static IOrderedEnumerable OrderBy(this IEnumerable source,Func keySelector)whereK:IComparable;3.2.10 OrderByDescending操作符OrderByDescending操作符的功能与Orderby操作符基本相同,只是二者的排序方式不同,OrderBy是顺序排序,而OrderByDes

27、cending则是逆序排序。OrderByDescending操作符有两个方法原型,其方法原型定义如下。/第一个方法原型public static IOrderedEnumerable OrderByDescending(this IEnumerable source,Func keySelector)whereK:IComparable;/第二个方法原型public static IOrderedEnumerable OrderByDescending(this IEnumerable source,Func keySelector,IComparer comparer);3.2.11 Th

28、enBy操作符ThenBy操作符可以对一个类型为IOrderedEnumerable(OrderBy操作符和OrderByDescending操作符返回值类型)的序列再次按照特定的条件顺序排序。ThenBy操作符有两个方法原型,第一个方法原型代码定义如下。public static IOrderedEnumerable ThenBy(this IOrderedEnumerable source,Func keySelector)whereK:IComparable;3.2.12 ThenByDescending操作符ThenByDescending操作符的功能与ThenBy操作符相比,排序的方

29、式有所不同。ThenBy是顺序排序,而ThenByDescending是逆序排序。ThenByDescending操作符有两个方法原型,其方法原型定义如下。/第一个方法原型public static IOrderedEnumerable ThenByDescending(this IOrderedEnumerable source,Func keySelector)whereK:IComparable;/第二个方法原型public static IOrderedEnumerable ThenByDescending(this IOrderedEnumerable source,Func key

30、Selector,IComparer comparer);3.2.13 Reverse操作符Reverse操作符用于生成一个与输入序列中元素相同,但元素排列顺序相反的新序列,其方法原型定义如下。public static IEnumerable Reverse(this IEnumerable source);3.2.14 Join操作符类似于SQL语句中的Join语句用于连接多个表,LINQ to OBJECT中的Join操作符可以用来连接两个输入序列,其方法原型定义如下。public static IEnumerable Join(this IEnumerable outer,IEnume

31、rable inner,Func outerKeySelector,Func innerKeySelector,Func resultSelector);3.2.15 GroupJoin操作符GroupJoin操作符也用于连接两个输入序列,但与Join操作符稍有不同。Join操作符在列举outer序列元素时,会将一个outer序列元素和其对应的inner序列元素作为一组参数传递给委托resultSelector,这就意味着如果某一个outer序列元素有多个对应的inner序列元素,Join操作符将会分多次将outer序列元素和每一个对应的inner序列元素传递给委托resultSelector

32、。使用GroupJoin操作符时,如果某一个outer序列元素有多个对应的inner序列元素,那么这多个对应的inner序列元素会作为一个序列一次性传递给委托resultSelector,可以针对此序列添加一些处理逻辑。3.2.16 GroupBy操作符GroupBy操作符类似SQL语言中的Group By语句,这里的GroupBy操作符用于将输入序列中的元素进行分组。GroupBy操作符有4个方法原型,第一个方法原型定义如下。public static IEnumerableIGrouping GroupBy(this IEnumerable source,Func keySelector)

33、;3.2.17 Distinct操作符Distinct操作符类似于SQL语言中的Distinct语句,这里的Distinct操作符也用于去除一个序列中的重复元素。Distinct操作符的方法原型定义如下。public static IEnumerable Distinct(this IEnumerable source);3.2.18 Union操作符Union操作符用于将两个序列中的元素合并生成一个新的序列,新序列将自动去除重复的元素。Union操作符的方法原型定义如下。public static IEnumerable Union(this IEnumerable first,IEnume

34、rable second);3.2.19 Intersect操作符Intersect操作符会将两个输入序列中的重复元素,即同时存在于两个输入序列中的元素挑选出来,生成一个新的序列。Intersect操作符的方法原型定义如下。public static IEnumerable Intersect(this IEnumerable first,IEnumerable second);3.2.20 Except操作符Except操作符可以实现一种序列之间的“减法”运算,它返回两个序列中存在于第一个序列但不存在于第二个序列的元素所组成的新序列。Except操作符的方法原型定义如下。public sta

35、tic IEnumerable Except(this IEnumerable first,IEnumerable second);3.2.21 Cast操作符LINQ提供了Cast操作符,可以使用Cast操作符将类型为IEnumerable的集合对象转换成为IEnumerable类型的集合对象。Cast操作符是定义在IEnumerable类型上的扩展方法,不能够在IEnumerable类型对象上调用。Cast操作符的方法原型定义如下。public static IEnumerable Cast(this IEnumerable source);3.2.23 AsEnumerable操作符As

36、Enumerable操作符可以将一个类型为IEnumerable的输入序列转换成一个IEnumerable类型的输出序列,其主要用于将一个实现了IEnumerable接口的对象(该对象可能还实现了其他接口)转换成一个标准的IEnumerable接口对象。在LINQ中,不同领域的LINQ实现(如LINQ To SQL、LINQ To XML等)都有专属于自己领域的操作符,这些领域专有的操作符一般是定义在那些既实现了IEnumerable接口也还实现了其他接口的类型上的扩展方法。3.2.24 DefaultIfEmpty操作符DefaultIfEmpty操作符可以用来为一个空的输入序列生成一个对应

37、的含有默认元素(如果序列元素类型为引用类型,则生成一个相同类型的null元素;若为值类型,生成相应的默认值)的新序列。由于有些标准操作符在一个空的序列上调用时会抛出一个异常,DefaultIfEmpty操作符可以将一个空的序列转换成一个包含默认元素的序列。DefaultIfEmpty操作符有两个方法原型,第一个方法原型的定义如下。public static IEnumerable DefaultIfEmpty(this IEnumerable source);3.2.25 Range操作符Range操作符用于辅助生成一个整数序列,其方法原型定义如下。public static IEnumera

38、ble Range(int start,int count);3.2.26 Repeat操作符Repeat操作符用于生成一个包含指定数量重复元素的序列,其方法原型定义如下。public static IEnumerable Repeat(T element,int count);3.2.27 Empty操作符Empty操作符用于生成一个包含指定类型元素的空序列,其方法原型定义如下。public static IEnumerable Empty();Empty操作符并不是一个扩展方法,只是定义在System.Linq.Enumerable上的一个普通的静态方法。Empty操作符的返回类型为IEn

39、umerable。3.3 非延时标准查询操作符非延时标准查询操作符是指不具备延时查询特性的标准查询操作符,这些操作符一般用于辅助延时标准查询操作符使用。3.3.1 ToArray操作符ToArray操作符用于将一个输入序列转换成一个数组,其方法原型定义如下。public static T ToArray(this IEnumerable source);根据原型定义,ToArray操作符接收一个包含元素类型为T的输入序列source,生成一个元素类型为T的数组返回。3.3.2 ToList操作符ToList操作符用于将一个输入序列转换成一个List(System.Collections.Gen

40、eric.List)对象。List是一种表示可通过索引访问的强类型列表对象,内部提供了用于对列表进行搜索、排序和操作的相关方法。3.3.3 ToDictionary操作符ToDictionary操作符用于将一个输入序列转换成一个Dictionary(System.Collections.Generic.Dictionary)集合对象。Dictionary是一种表示键和值的集合类型,它允许元素以键-值对的方式存储在集合内部,每一个键-值对的键必须全局唯一,而且一个键只能对应一个值,可以通过键来查询其对应的元素值。3.3.4 ToLookup操作符ToLookup操作符可以将一个输入序列转换成一个

41、ILookup(System.Linq.ILookup)集合对象。ILookup集合对象与Dictionary集合对象非常相似,不同的是,在Dictionary中一个键(key)只能对应一个元素;而在ILookup中,一个键可以对应一组元素(一个序列)。ToLookup操作符的使用与ToDictionary操作符非常相似,也是有4个方法原型,第一个方法原型定义如下。public static ILookup ToLookup(this IEnumerable source,Func keySelector);3.3.5 SequenceEqual操作符SequenceEqual操作符用于判断两

42、个序列是否相等,其方法原型有两个,第一个方法原型定义如下。public static bool SequenceEqual(this IEnumerable first,IEnumerable second);此方法原型接收first和second两个序列参数,使用System.Object.Equals方法分别比较两个序列中的对应元素是否相等。如果两个序列元素个数相同并且对应元素相等,则返回true,否则返回false。3.3.6 First操作符First操作符用于返回输入序列的第一个元素或者满足条件的第一个元素,其有两个方法原型,第一个方法原型定义如下。public static T F

43、irst(this IEnumerable source);此方法原型接收一个输入序列参数source,并且返回source序列的第一个元素。3.3.7 FirstOrDefault操作符FirstOrDefault操作符的使用与First操作符非常相似,只是在没有找到元素时,First操作符会抛出一个异常对象,而FirstOrDefault操作符会返回一个相关类型默认值元素。例如,如果输入序列的元素类型为引用类型,当没有找到元素时,FirstOrDefault操作符会返回一个null结果。FirstOrDefault操作符有两个方法原型,第一个方法原型定义如下。public static T

44、 FirstOrDefault(this IEnumerable source);3.3.8 Last操作符Last操作符用于返回输入序列的最后一个元素或者满足条件的最后一个元素,其有两个方法原型,第一个方法原型定义如下。public static T Last(this IEnumerable source);3.3.9 LastOrDefault操作符LastOrDefault操作符的使用与Last操作符非常相似,只是在没有找到元素时,Last操作符会抛出一个异常对象,而LastOrDefault操作符会返回一个相关类型默认值元素。例如,如果输入序列的元素类型为引用类型,当没有找到元素时,

45、LastOrDefault操作符会返回一个null结果。LastOrDefault操作符有两个方法原型,第一个方法原型定义如下。public static T LastOrDefault(this IEnumerable source);3.3.10 Single操作符Single操作符用于从一个只含有一个元素的输入序列中返回唯一的元素或者满足特定条件的唯一元素。如果输入序列中的元素个数为零或者多于一个,Single操作符会抛出一个异常。Single操作符的方法原型有两个,第一个方法原型定义如下。public static T Single(this IEnumerable source);3

46、.3.11 SingleOrDefault操作符SingleOrDefault操作符的使用与Single操作符非常相似,只是在没有找到元素时,Single操作符会抛出一个异常对象,而SingleOrDefault操作符会返回一个相关类型默认值元素。例如,如果输入序列的元素类型为引用类型,当没有找到元素时,SingleOrDefault操作符会返回一个null结果。SingleOrDefault操作符有两个方法原型,第一个方法原型定义如下。public static T SingleOrDefault(this IEnumerable source);3.3.12 ElementAt操作符Ele

47、mentAt操作符用于返回输入序列中指定位置的元素,其方法原型定义如下。public static T ElementAt(this IEnumerable source,int index);3.3.13 ElementAtOrDefault操作符ElementAtOrDefault操作符的使用与ElementAt操作符非常相似,只是在指定的位置索引值不合法的情况下(小于0或者大于或等于序列元素个数),ElementAt操作符会抛出一个异常对象,而ElementAtOrDefault操作符会返回一个相关类型默认值元素。ElementAtOrDefault操作符的方法原型定义如下。public

48、 static T ElementAtOrDefault(this IEnumerable source,int index);3.3.14 Any操作符Any操作符用于判断一个输入序列中是否含有元素或者含有满足特定条件的元素,其有两个方法原型,第一个方法原型定义如下。public static bool Any(this IEnumerable source);此方法原型接收一个输入序列参数source,如果source中有至少一个元素存在,则Any操作符返回true,否则返回false。3.3.15 All操作符All操作符用于判断输入序列中的所有元素是否全部满足指定条件,其方法原型定义如

49、下。public static bool All(this IEnumerable source,Func predicate);3.3.16 Contains操作符Contains操作符用于判断输入序列中是否含有指定的元素,其有两个方法原型,第一个方法原型的定义如下。public static bool Contains(this IEnumerable source,T value);3.3.17 Count操作符Count操作符用于获取输入序列的元素个数或者满足某个特定条件的元素个数,其有两个方法原型,第一个方法原型定义如下。public static int Count(this IE

50、numerable source);此方法原型接收一个输入序列参数source,返回值为source中的元素个数。3.3.18 LongCount操作符LongCount操作符的使用与Count操作符基本相同,不同的是,Count操作符以int类型返回元素个数,而LongCount操作符以Long类型返回元素个数。LongCount操作符的方法原型有两个,第一个方法原型定义如下。public static long LongCount(this IEnumerable source);第二个方法原型定义如下。public static long LongCount(this IEnumerab

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁