本文引用自:https://www.cnblogs.com/yeagen/archive/2012/09/12/2682422.html
IEnumerable<T>接口主要功能是提供了大量与查询相关的方法,虽然这些方法实际上是以扩展方法的形式定义,但也不影响IEnumerable<T>接口的功能性。
1.IEnumerable<T>
接口
IEnumerable<T>泛型接口支持在制定数据集合上进行迭代操作。它定义了一组扩展方法,用来对数据集合中的元素进行遍历、过滤、排序、搜索等操作。在LINQ中,数据源实际上是实现了接口IEnumerable<T>的类,通过select子句返回的查询结果页是一个实现了IEnumerable<T>的类。
在.NET类库中,IEnumerable<T>接口提供了大量与查询相关的方法。这些方法实际上是以扩展方法的形式定义,但是由于它的作用类型也为IEnumerable<T>接口,所以使用上和成员方法很类似。
IEnumerable<T>接口主要成员
成员
|
功能
|
Aggregate
|
对序列应用累加器函数,可以指定累加方法
|
Sum
|
计算序列中所有元素的和,返回值有int、long、float、double、decimal类型,并且可以指定元素到数值的映射方法
|
Average
|
计算序列中所有元素的平均值,返回值有int、long、float、double、decimal类型,并且可以指定元素到数值的映射方法
|
Max
|
计算序列中所有元素的最大值,返回值有int、long、float、double、decimal类型,并且可以指定元素到数值的映射方法
|
Min
|
计算序列中所有元素的最小值,返回值有int、long、float、double、decimal类型,并且可以指定元素到数值的映射方法
|
All
|
检查是否序列中所有元素都满足条件,可以指定条件判断方法。如果所有元素都满足条件返回True,否则返回False
|
Any
|
检查序列中是否有任何一个元素满足条件,可以指定条件的判断方法。如果有一个以上(含一个)元素满足条件返回True,否则返回False
|
Contains
|
检查数据系列中是否包含特定的元素,可以指定相等比较方法
|
Count
|
返回序列中满足指定条件的元素的数量,可以指定条件判断方法
|
LongCount
|
返回序列中满足指定条件的元素的长数量,可以指定条件判断方法
|
Cast
|
将IEnumerable中的元素转换为指定的数据类型
|
DefaultIfEmpty
|
返回序列中指定位置的元素。如果序列为空,则返回默认的元素值
|
ElementAt
|
返回序列中指定索引处的元素
|
ElementAtOrDefault
|
返回序列中指定索引处的元素。如果序列为空,则返回默认值
|
First
|
返回序列中满足指定条件的第一个元素,可以指定条件判断方法
|
FirstOrDefault
|
返回序列中满足指定条件的第一个元素。如果不存在则返回默认值,也可以指定条件判断方法
|
Last
|
返回序列中满足指定条件的最后一个元素,可以指定条件判断方法
|
LastOrDefault
|
返回序列中满足指定条件的最后一个元素。如果不存在则返回默认值,也可以指定条件判断方法
|
Single
|
返回序列中满足指定条件的唯一元素。如果不止一个元素满足条件会引发一场,可以指定条件判断方法
|
SingleOrDefault
|
返回序列中满足指定条件的唯一元素。如果不存在则返回默认值,如果不止一个元素满足条件会引发一场,可以指定条件判断方法
|
Reverse
|
反转序列中元素的顺序
|
Distinct
|
返回序列中不重复的元素的集合,可以指定相等比较方法
|
Concat
|
连接两个序列,直接首尾相连。返回结果可能存在重复数据
|
Except
|
获取两个元素集合的差集,可以指定相等比较方法
|
Intersect
|
获取两个元素集合的交集,可以指定相等比较方法
|
Union
|
获取两个元素集合的并集,可以指定相等比较方法
|
SequenceEqual
|
比较两个序列是否相等,可以指定相等比较方法
|
Where
|
根据制定条件对集合中元素进行筛选,返回满足条件的元素集合
|
Skip
|
跳过序列中指定数量的元素,然后返回剩余的元素
|
SkipWhile
|
跳过序列中满足指定条件的元素,然后返回剩余的元素,可以指定条件判断方法
|
Take
|
从序列的开头返回指定数量的连续元素
|
TakeWhile
|
返回从序列开始的满足指定条件的连续元素,可以指定条件判断方法
|
ToArray
|
从IEnumerable创建一个数组
|
ToList
|
从IEnumerable创建一个List
|
从上表可以看出,IEnumerable提供的方法包括数值运算(Sum、Min、Max、 Average)、元素数量(Count、LongCount)、取值(First、Last、ElementAt等)、提取子集(Skip、 SkipWhile、Take、TakeWhile、)集合操作(Reverse、Concat、Distinct、Except、Intersect、 Union、SequenceEqual等)。这些方法提供了LINQ所需要的所有操作。
注意:
IEnuerable继承自IEnumerable接口,所以它也包含IEnumerable接口的所有方法,所以还包括Select()、SelectMany()、Repeat()等方法。
另外,IQuery接口从IEnumerable派生而来,通常也可以作为数据源使用,它的使用和IEnumerable类似。