导航
简介
在LINQ中,不是每一次使用LINQ都要进行一步一步写查询来操作的,完全可以通过.NET自带的方法来简单写LINQ查询语句,这些方法都有一些共同性,其类型实现了 IEnumerable<T> 接口或 IQueryable<T> 接口。IEnumerable<T> or IQueryable<T>.‘ data-guid="e001e287c88bcb58f2b6c589fc55a6e6">此外,许多标准查询运算符方法运行所针对的类型不是基于 IEnumerable<T> 或 IQueryable<T> 的类型。
Enumerable type defines two such methods that both operate on objects of type IEnumerable.‘ data-guid="6275fac4fb94626581bd1792375126e4">Enumerable 类型定义两个此类方法,这些方法都在类型为 IEnumerable 的对象上运行。 Cast<TResult>(IEnumerable) and OfType<TResult>(IEnumerable), let you enable a non-parameterized, or non-generic, collection to be queried in the LINQ pattern.‘ data-guid="7007dc47c61ea0c01bc9102331d224e7">利用这些方法(Cast<TResult>(IEnumerable) 和 OfType<TResult>(IEnumerable)),您将能够在 LINQ 模式中查询非参数化或非泛型集合。 这些方法通过创建一个强类型的对象集合来实现这一点。 Queryable class defines two similar methods, Cast<TResult>(IQueryable) and OfType<TResult>(IQueryable), that operate on objects of type Queryable.‘ data-guid="a4247f9753b25d062ed27e4fc2babab5">Queryable 类定义两个类似的方法(Cast<TResult>(IQueryable) 和 OfType<TResult>(IQueryable)),这些方法在类型为 Queryable 的对象上运行。
Enumerable 类的扩展方法
Aggregate:
(1)Enumerable.Aggregate<TSource> 方法 (IEnumerable<TSource>, Func<TSource, TSource, TSource>)方法
对序列应用累加器函数。
string sentence = "the quick brown fox jumps over the lazy dog"; string[] words = sentence.Split(‘ ‘); string reversed = words.Aggregate((workingSentence, next) => next + " " + workingSentence ); //内部执行方式为: //1.workingSentence : the next:quick 结果: quick the //2.workingSentence :quick the next:brown 结果:brown quick the //依次累加可以得到结果
(2)Enumerable.Aggregate<TSource, TAccumulate> (IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource, TAccumulate>)方法
对序列应用累加器函数。 将指定的种子值用作累加器初始值。
int[] ints = { 4, 8, 8, 3, 9, 0, 7, 8, 2 }; // Count the even numbers in the array, using a seed value of 0. int numEven = ints.Aggregate(0, (total, next) => next % 2 == 0 ? total + 1 : total); Console.WriteLine("The number of even integers is: {0}", numEven);