推荐大家下载本文的PDF进行阅读,可以方便的使用书签来阅读各个方法,而且代码中的关键字是高亮显示的。
pdf版下载地址 [url=http://www.1sucai.cn/books/24738.html]http://www.1sucai.cn/books/24738.html[/url]
[b]一、投影操作符[/b]
1. Select
Select操作符对单个序列或集合中的值进行投影。下面的示例中使用select从序列中返回Employee表的所有列:
[url=http://www.1sucai.cn/upload/2010-2/20100228101645673.gif][img]http://files.jb51.net/upload/2010-2/20100228101645767.gif[/img]
[/url]
|
Except
|
返回差集,差集是指位于一个集合但不位于另一个集合的元素。
|
|
[url=http://www.1sucai.cn/upload/2010-2/20100228101645176.gif][img]http://files.jb51.net/upload/2010-2/20100228101645532.gif[/img]
[/url]
|
|
Intersect
|
返回交集,交集是指同时出现在两个集合中的元素。
|
|
[url=http://www.1sucai.cn/upload/2010-2/20100228101645477.gif][img]http://files.jb51.net/upload/2010-2/20100228101645373.gif[/img]
[/url]
|
|
Union
|
返回并集,并集是指位于两个集合中任一集合的唯一的元素。
|
|
[url=http://www.1sucai.cn/upload/2010-2/20100228101645613.gif][img]http://files.jb51.net/upload/2010-2/20100228101645397.gif[/img]
[/url]
|
使用方式均为“集合1.方法名(集合2)”,返回值为运算结果的集合,这里就不演示了。
[b]九、生成操作符
[/b]生成是指创建新的值序列。
1. Empty
Empty操作符返回一个指定类型的空集合。这里的空不是null,而是元素数量为0的集合。以下的示例演示了如何创建一个IEnumerable<int>类型的空集合:
var q = Enumerable.Empty<int>();
Console.WriteLine(q == null);
Console.WriteLine(q.Count());
2. DefaultIfEmpty
DefaultIfEmpty将空集合替换为具有默认值的单一实例集合。执行此方法获得的集合将至少含有一个元素,这是因为DefaultIfEmpty方法需要两个参数,第一个参数是一个泛型集合,第二个参数是相应类型的单个元素,如果第一个参数中不含有任何元素,它将返回第二个参数指定的单个元素。如果你使用了DefaultIfEmpty方法的重载方法DefaultIfEmpty<T>(IEnumerable<T> array),如果指定的array集合为空,那么将返回一个类型为T,值为null的单个对象。以下的代码演示了这一过程:
[url=http://www.1sucai.cn/upload/2010-2/20100228101645155.gif][img]http://files.jb51.net/upload/2010-2/20100228101645205.gif[/img]
[/url]
1. All
All方法用来确定是否序列中的所有元素都满足条件。以下代码演示了All的用法:
[url=http://www.1sucai.cn/upload/2010-2/20100228101645940.gif][img]http://files.jb51.net/upload/2010-2/20100228101645311.gif[/img]
[/url]
1. Take
Take(int n)方法将从序列的开头返回数量为n的连续元素。以下代码演示了从一个序列中返回其前五个元素:
[url=http://www.1sucai.cn/upload/2010-2/20100228101645838.jpg][img]http://files.jb51.net/upload/2010-2/20100228101645381.jpg[/img]
[/url]
2. TakeWhile
TakeWhile方法执行时将逐个比较序列中的每个元素是否满足指定条件,直到碰到不符合指定的条件的元素时,返回前面所有的元素组成的序列。以下代码演示了这一过程:
[url=http://www.1sucai.cn/upload/2010-2/20100228101645599.jpg][img]http://files.jb51.net/upload/2010-2/20100228101645902.jpg[/img]
[/url]
3. Skip
Skip(int n)方法将跳过序列开头的n个元素,然后返回其余的连续元素。以下代码演示了从一个序列中跳过前五个元素,然后返回其余的元素组成的序列:
[url=http://www.1sucai.cn/upload/2010-2/20100228101646207.jpg][img]http://files.jb51.net/upload/2010-2/20100228101646565.jpg[/img]
[/url]
4. SkipWhile
SkipWhile方法执行时将逐个比较序列中的每个元素是否满足指定条件,直到碰到不符合指定的条件的元素时,返回其余所有的元素组成的序列。以下代码演示了这一过程:
[url=http://www.1sucai.cn/upload/2010-2/20100228101646377.jpg][img]http://files.jb51.net/upload/2010-2/20100228101646504.jpg[/img]
[/url]
本文总结
本文介绍了LINQ标准查询操作符。没有这些操作符,LINQ就不会存在。本文为理解这些操作符的功能提供了很好的基础。了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能。
微信版

扫一扫进微信版
返回顶部