LINQ to Object编程接口

上传人:jiups****uk12 文档编号:45201457 上传时间:2018-06-15 格式:PPT 页数:66 大小:1.30MB
返回 下载 相关 举报
LINQ to Object编程接口_第1页
第1页 / 共66页
LINQ to Object编程接口_第2页
第2页 / 共66页
LINQ to Object编程接口_第3页
第3页 / 共66页
LINQ to Object编程接口_第4页
第4页 / 共66页
LINQ to Object编程接口_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《LINQ to Object编程接口》由会员分享,可在线阅读,更多相关《LINQ to Object编程接口(66页珍藏版)》请在金锄头文库上搜索。

1、第第3 3章章 LINQ to OBJECTLINQ to OBJECT本章结合实例介绍LINQ to OBJECT编程接口,包括一些必 要的基础知识和使用技巧等。LINQ to OBJECT允许开发者 使用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

2、to OBJECT概述 LINQ to OBJECT是用于操作内存对象的LINQ编程接口,包 含了大量的查询操作符,针对内存中的集合对象进行操作 。 下面是一段使用标准查询操作符where和select对一个数组 里面的元素进行查询的代码。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编程接口

3、的标准操作符/输出满足条件的所有字符串foreach (var item in items)Console.WriteLine(item);3.1.2 IEnumerable泛型接口、 序列和标准查询操作符LINQ to OBJECT的实现基于IEnumerable 泛型接口、序列(sequences)以及标准查询 操作符(Standard Query Operators)等基 本概念。其中,IEnumerable泛型接口是 使用C# 2.0泛型技术实现的一个接口,该接 口与IEnumerable类似,允许对接口内部的元 素进行列举操作;序列是一个专门术语,表 示一个实现了IEnumerabl

4、e接口的集合对 象。3.1.2 IEnumerable泛型接口、 序列和标准查询操作符例如,下面的代码定义了一个内部元素为 string类型的序列。/定义一个序列,使用泛型接口时类型T要明确指定具体类型IEnumerable strSequence ; 3.1.2 IEnumerable泛型接口、 序列和标准查询操作符LINQ to OBJECT的大部分操作是针对序列的 。标准查询操作符本质上是一些扩展方法( Extension Methods),这些扩展方法定义在 静态类System.Linq.Enumerable中,其原型 的第一个参数(带this修饰符的参数)是 IEnumerable类

5、型。3.1.2 IEnumerable泛型接口、 序列和标准查询操作符要在代码中使用LINQ to OBJECT标准查询操 作符,需要在代码中添加using System.Linq 指令,以引入必要的命名空间。标准查询操 作符对象具体实现在System.Core.dll文件中 ,这个文件的引用会被集成开发环境(如 Visual Studio 2008)在每次新建工程时自 动加入工程引用中。3.2 延时标准查询操作符延时标准查询操作符是指具备延时查询特性 的标准查询操作符,这些操作符构成了LINQ to OBJECT编程接口的最主要内容。 3.2.1 Where操作符Where操作符用于限定输入

6、集合中的元素,将 符合条件的元素组织生成一个序列结果。 Where操作符的方法原型有两个,第一个方法 原型定义如下。public static IEnumerable Where(this IEnumerable source,Func predicate);3.2.2 Select操作符Select操作符用于根据输入序列中的元素创 建相应的输出序列中的元素,输出序列中的 元素类型可以与输入序列中的元素类型相同 ,也可以不同。Select操作符的方法原型也 有两个,第一个方法原型的定义如下。public static IEnumerable Select(this IEnumerable so

7、urce,Func selector);3.2.3 SelectMany操作符SelectMany操作符用于根据输入序列中的每 一个元素,在输出序列中创建相应的零个或 者多个元素,与上一节Select操作符不同, Select操作符会根据输入序列中的每一个元 素创建一个对应的输出序列元素,然而 SelectMany操作符可以创建多个。 SelectMany操作符的方法原型有两个,第一 个方法原型的定义如下。public static IEnumerable SelectMany(this IEnumerable source,Func selector);3.2.4 Take操作符Take操作

8、符用于从输入序列中返回指定数量 的元素,其方法原型定义如下。public static IEnumerable Take(this IEnumerable source,int count);Take操作符接收一个输入序列参数source和 一个整数类型参数count,count代表须返回 的元素个数。当Take操作符被调用时,将从 输入序列source中第一个元素开始,顺序取 count个元素一起组成一个新的序列作为结果 返回。当count的值大于输入序列元素的个数 时,将返回由输入序列中的所有元素所组成 的新序列。3.2.5 TakeWhile操作符TakeWhile操作符用于从输入序列中

9、返回指定 数量且满足一定条件的元素,TakeWhile操作 符有两个方法原型,第一个方法原型定义如 下。public static IEnumerable TakeWhile(this IEnumerable source,Func predicate);3.2.6 Skip操作符Skip操作符用于从输入序列中跳过指定数量 的元素,返回由序列中剩余的元素所组成的 新序列,其方法原型定义如下。public static IEnumerable Skip(this IEnumerable source,int count);Skip操作符接收一个整数类型参数用来指定 需要跳过元素的个数,如果参数值

10、大于输入 序列元素的个数,Skip操作符返回一个空的 序列。3.2.7 SkipWhile操作符SkipWhile操作符用于从输入序列中跳过满足 一定条件指定数量的元素,与TakeWhile操作 符类似,SkipWhile操作符有两个方法原型, 第一个方法原型定义如下。public static IEnumerable SkipWhile(this IEnumerable source,Func predicate);3.2.8 Concat操作符Concat操作符用于连接两个序列,生成一个 新的序列,其方法原型定义如下。public static IEnumerable Concat(thi

11、s IEnumerable first,IEnumerable second);Concat操作符接收first和second两个输入序 列,根据这两个序列中的元素,生成一个包 含全部元素的新序列作为返回值。3.2.9 OrderBy操作符OrderBy操作符用于对输入序列中的元素进行 排序,排序基于一个委托方法的返回值顺序 ,排序过程完成后,会返回一个类型为 IOrderedEnumerable的集合对象。其中, IOrderedEnumerable接口实现了 IEnumerable接口。OrderBy操作符有两个 方法原型,第一个方法原型定义如下。public static IOrdere

12、dEnumerable OrderBy(this IEnumerable source,Func keySelector)whereK : IComparable;3.2.10 OrderByDescending操作符OrderByDescending操作符的功能与Orderby操作符基本相同, 只是二者的排序方式不同,OrderBy是顺序排序,而 OrderByDescending则是逆序排序。OrderByDescending操作符 有两个方法原型,其方法原型定义如下。/第一个方法原型public static IOrderedEnumerable OrderByDescending(th

13、is IEnumerable source,Func keySelector)whereK : IComparable;/第二个方法原型public static IOrderedEnumerable OrderByDescending(this IEnumerable source,Func keySelector,IComparer comparer);3.2.11 ThenBy操作符ThenBy操作符可以对一个类型为 IOrderedEnumerable(OrderBy操作符和 OrderByDescending操作符返回值类型)的序 列再次按照特定的条件顺序排序。ThenBy操 作符有

14、两个方法原型,第一个方法原型代码 定义如下。public static IOrderedEnumerable ThenBy(this IOrderedEnumerable source,Func keySelector)whereK : IComparable;3.2.12 ThenByDescending操作符ThenByDescending操作符的功能与ThenBy操作符相 比,排序的方式有所不同。ThenBy是顺序排序,而 ThenByDescending是逆序排序。ThenByDescending 操作符有两个方法原型,其方法原型定义如下。/第一个方法原型public static I

15、OrderedEnumerable ThenByDescending(this IOrderedEnumerable source,Func keySelector)whereK : IComparable;/第二个方法原型public static IOrderedEnumerable ThenByDescending(this IOrderedEnumerable source,Func keySelector,IComparer comparer);3.2.13 Reverse操作符Reverse操作符用于生成一个与输入序列中元 素相同,但元素排列顺序相反的新序列,其 方法原型定义如下。

16、public static IEnumerable Reverse(this IEnumerable source);3.2.14 Join操作符类似于SQL语句中的Join语句用于连接多个表 ,LINQ to OBJECT中的Join操作符可以用来 连接两个输入序列,其方法原型定义如下。public static IEnumerable Join(this IEnumerable outer,IEnumerable inner,Func outerKeySelector,Func innerKeySelector,Func resultSelector);3.2.15 GroupJoin操作符GroupJoin操作符也用于连接两个输入序列,但与 Join操作符稍有不同。J

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号