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,使用指定的方式结合两个集合。

posted @ 2022-11-13 18:27  lrplrplrp  阅读(1389)  评论(0编辑  收藏  举报