好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

IQueryable功能参数、方法、属性详解

IQueryable是什么

如果你经常用linq表达式,相信你可能会很好理解IQueryable,它继承了IEnumable接口,也就是继承了IQueryable的对象都是可被被遍历的集合,Query译为查询,也就是可查询的集合,Queryable提供了一些方法方便使用者查询集合中的元素并返回,没错,linq就是这么来的,不过linq使用的是IEnumable中的方法,两者基本相同,所以也不用太在意用法上的差异。

Queryable的参数

除了常见的类型,IQueryable会传入Expression<Func<TSource, bool>>类型的参数,也就是我们的lamdba表达式,Func是委托类型,可以限定lamdba表达式传入的值和返回的值,而Expression则是表达式树类型,可以接收一个lamdba表达式,并使用Compile方法编译回表达式。那为什么不直接传一个Func类型的对象呢,其实Expression可以看作是代码片段,代表了一段逻辑,可以被编译成其他类型的语言,比如SQL,这样就使数据库操作更加方便

IQueryable的方法汇总

常用方法

Contains:检测集合元素是否包含某个元素,类似于SQL的like %xxx%

Where:接收一个传入集合对象返回bool类型的表达式,返回使bool值为true的元素

Select:接受一个传入集合对象返回泛型对象的表达式,

其余方法

Aggregate,为集合的元素应用一个累加器,你可以指定累加器的实现。

All,判断是否集合中所有元素都满足给定的条件。

Any,判断是否集合中存在一个元素满足给定条件或者是否存在元素。

Append,在集合的尾部添加元素。

AsQueryable,将一个IEnumerable转化为IQueryable(对应的实现类型为EnumerableQuery)。

Average,计算一个数值集合的平均值。

Cast,将集合中的元素转化为指定的类型。

Concat,连接两个集合。

Count,计算集合中元素的数量。

DefaultIfEmpty,获取集合,但如果集合是空的话返回包含一个默认元素的集合。

Distinct,返回元素均为唯一的集合。

ElementAt,获取指定索引(Index)处的元素。

ElementAtOrDefault,获取指定索引(Index)处的元素,若元素为空则返回默认值。

Except,获取排除指定元素后的集合。

First,获取集合中的第一个元素。

FirstOrDefault,获取集合中的第一个元素,若为空则返回默认值。

GroupBy,使用指定的条件对集合进行分组,使用指定方式构建新元素并返回新的集合。

GroupJoin,分组与关联两个存在“主外键”关系的集合。

Intersect,对比指定集合获取交叉项,可指定交叉项的对比方法。

Join,使用匹配的键值关联指定的集合。

Last,获取集合中的最后一个元素

LastOrDefault,获取集合中的最后一个元素,若为空则返回默认值。

LongCount,以Int64来返回集合中元素的数量。

Max,获取指定属性值为最大的元素。

Min,获取指定属性值为最小的元素。

OfType,使用指定的类型过滤集合中的元素。

OrderBy,对集合进行升序排序,可以指定排序的属性。

OrderByDescending,对集合进行降序排序,可以指定排序的属性。

Prepend,在集合的头部添加元素。

Reverse,翻转集合顺序。

SelectMany,若集合中的元素存在子集合,则可通过该方法将这些属性“选择”出来并生成一个新的集合。

SequenceEqual,判断是否与指定的集合相同。

Single,获取集合中唯一一个元素,若集合元素为空或超过一个将抛出异常。

SingleOrDefault,获取结合中唯一一个元素,若集合元素为空或超过一个则获取默认值。

Skip,跳过指定数量的元素,并返回剩余元素的集合。

SkipLast,从尾部开始跳过指定数量元素,并返回剩余元素集合。

SkipWhile,跳过指定条件的元素,并返回剩余元素集合。

Sum,计算集合中指定属性值得总和。

Take,从头部开始获取指定个数的元素。

TakeLast,从尾部开始获取指定个数的元素。

TakeWhile,获取满足指定条件的元素的集合。

ThenBy,以升序对集合进行二次排序。

ThenByDescending,以降序对集合进行二次排序。

Union,合并两个集合。

Zip,使用指定的方式结合两个集合。


查看更多关于IQueryable功能参数、方法、属性详解的详细内容...

  阅读:55次