非延时标准查询操作符是指不具备延时查询特性的标准查询操作符,这些操作符一般用于辅助延时标准查询操作符使用。

1、ToArray操作符

  ToArray操作符用于将一个输入序列转换成一个数组。

  方法原型:

  1. public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. List<int> listInt = new List<int>();
  4. listInt.Add();
  5. listInt.Add();
  6. listInt.Add();
  7. int[] intArr = listInt.AsEnumerable().ToArray(); //将集合转换为数组  //如果不AsEnumerable()则调用的就是List<T>类的ToArray()方法,效果一样
  8. foreach (int i in intArr)
  9. {
  10. Console.WriteLine(i); //输出1 2 3
  11. }
  12. Console.ReadKey();
  13. }

2、ToList操作符

  ToList操作符用于将一个输入序列转换成一个List<T>对象。

  来看方法原型:

  1.   public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source);

  注意到返回的List<T>,任意IEnumerable<T>转换为List<T>

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints = new int[] { , , , , };
  4. List<int> ListInt = ints.ToList();
  5. foreach (int i in ints)
  6. {
  7. Console.WriteLine(i); //输出 1 2 3 4 5
  8. }
  9.  
  10. Console.ReadKey();
  11. }

3、ToDictionary操作符

  ToDictionary操作符用于将一个输入序列转换为一个Dictionary<K,T>集合对象。

  看方法原型:

  1. public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);
  2.  
  3. [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
  4. public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector);
  5.  
  6. public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer);
  7.  
  8. public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. People p1 = new People(,"张飞",);
  4. People p2 = new People(,"关羽",);
  5. People p3 = new People(,"刘备",);
  6.  
  7. People[] PeoArr = new People[] { p1, p2, p3 };
  8. Dictionary<string,People> DicPeo = PeoArr.ToDictionary(p => p.Name); //指定Key是Name属性
  9. Console.WriteLine(DicPeo["张飞"].Id + DicPeo["张飞"].Name + DicPeo["张飞"].Age); //输出 1 张飞 20
  10.  
  11. Console.ReadKey();
  12. }

4、ToLookup操作符

  ToLookup操作符可以将一个输入序列转换成一个ILookup<K,T>集合对象。ILookup与IDictionary<K,T>非常相似,只不过在Dictionary中一个键只能对应一个元素,而在ILookup<K,T>中,一个键可以对应一组元素(一个序列)。

5、SequenceEqual操作符

  SequenceEqual操作符用于判断两个序列是否相等。

  方法原型:

  1. public static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);
  2. public static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. int[] ints2 = new int[] { , , };
  5.  
  6. Console.WriteLine(ints1.SequenceEqual(ints2)); //输出 True
  7. ints2[] = ;
  8. Console.WriteLine(ints1.SequenceEqual(ints2)); //输出False
  9.  
  10. Console.ReadKey();
  11. }

6、First操作符

  First操作符用于返回输入序列的第一个元素或满足条件的第一个元素。

  方法原型:

  1. public static TSource First<TSource>(this IEnumerable<TSource> source);
  2. public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法多了一个委托,是再次筛选的,即第一个元素要令第二个委托为True才返回。

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. int i = ints1.Where(p => p > ).First();
  5. Console.WriteLine(i); //输出 2
  6. int j = ints1.Where(p => p > ).First(m => m > ); //输出3,First参数里的委托要求第一个大于2的元素
  7. Console.WriteLine(j);
  8.  
  9. Console.ReadKey();
  10. }

7、FirstOrDefault操作符

  FirstOrDefault操作符的使用与First操作符非常相似,只是在没有找到元素时,First操作符会抛出一个异常,而FirstOrDefault操作符会返回一个相关类型默认值元素。

  方法原型:

  1. public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source);
  2. public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法原型,增加了一个委托参数,该参数是进一步筛选用的。

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. //int i = ints1.Where(p => p > 4).First(); //此处会抛出异常,“序列中不包含任何元素”
  5. //Console.WriteLine(i);
  6.  
  7. int j = ints1.Where(p => p > ).FirstOrDefault();
  8. Console.WriteLine(j); //输出0 可以看到在没有元素的时候,int类型返回0,其他类型也会返回默认值
  9. int k = ints1.Where(p => p > ).FirstOrDefault(m => m > );
  10. Console.WriteLine(k); //输出3
  11.  
  12. Console.ReadKey();
  13. }

8、Last操作符

  Last操作符用于返回输入序列的最后一个元素或满足条件的最后一个元素。

  方法原型:

  1. public static TSource Last<TSource>(this IEnumerable<TSource> source);
  2. public static TSource Last<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法原型可以再次筛选。

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. int i = ints1.Where(p => p > ).Last(); //大于1的有2 3
  5. Console.WriteLine(i); //输出 3
  6.  
  7. int j = ints1.Where(p => p > ).Last(m => m < );
  8. Console.WriteLine(j); //输出 2
  9.  
  10. Console.ReadKey();
  11. }

9、LastOrDefault操作符

  LastOrDefault操作符的使用与Last操作符类似,只是在没有找到元素时,Last操作符会抛出一个异常,而LastOrDefault会返回一个默认元素。

  方法原型:

  1. public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source);
  2. public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. int i = ints1.Where(p => p > ).LastOrDefault(); //大于4的元素没有
  5. Console.WriteLine(i); //输出 0
  6.  
  7. int j = ints1.Where(p => p > ).LastOrDefault(m => m < );
  8. Console.WriteLine(j); //输出 2
  9.  
  10. Console.ReadKey();
  11. }

10、Single操作符

  Single操作符用于从一个只含有一个元素的输入序列中返回唯一的元素或者满足特定条件的唯一元素。如果输入序列中的元素个数为零或多于一个,Single操作符会抛出一个异常。

  方法原型:

  1. public static TSource Single<TSource>(this IEnumerable<TSource> source);
  2. public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法原型,多了个委托,可以再传入条件筛选。

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { };
  4. int i = ints1.Single();
  5. Console.WriteLine(i); //输出10
  6.  
  7. int[] ints2 = new int[] { , , };
  8. int j = ints2.Single(m => m > );
  9. Console.WriteLine(j); //输出3
  10.  
  11. Console.ReadKey();
  12. }

11、SingleOrDefault操作符

  SingleOrDefault操作符的使用与Single操作符非常相似,只是在没有找到元素时,Single操作符会抛出一个异常对象,而SingleOrDefault会返回一个默认值的元素。

  方法原型:

  1. public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source);
  2. public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法原型还是允许传入条件进一步筛选。

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { }; //没有元素
  4. int i = ints1.SingleOrDefault();
  5. Console.WriteLine(i); //输出 0
  6.  
  7. int[] ints2 = new int[] { , , };
  8. int j = ints2.SingleOrDefault(m => m > );
  9. Console.WriteLine(j); //输出0
  10.  
  11. Console.ReadKey();
  12. }

12、ElementAt操作符

    ElementAt操作符用于返回输入序列中指定位置的元素。

    方法原型:

  1.   public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, int index);

    代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. int i = ints1.ElementAt();
  5. Console.WriteLine(i); //输出 3
  6.  
  7. Console.ReadKey();
  8. }

13、ElementAtOrDefault操作符

  ElementAtOrDefault操作符的使用与ElementAt操作符非常相似,只是在指定的位置索引值不合法的情况下。

  方法原型:

  1.   public static TSource ElementAtOrDefault<TSource>(this IEnumerable<TSource> source, int index);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. int i = ints1.ElementAtOrDefault();
  5. Console.WriteLine(i); //输出 0
  6.  
  7. Console.ReadKey();
  8. }

14、Any操作符

   Any操作符用于判断一个输入序列中是否含有元素或者满足特定条件的元素。

  方法原型:

  1. public static bool Any<TSource>(this IEnumerable<TSource> source);
  2. public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. bool b1 = ints1.Any();
  5. Console.WriteLine(b1); //返回True 输入序列中包含元素
  6.  
  7. bool b2 = ints1.Any(p => p > ); //判断输入序列中是否包含大于4的元素
  8. Console.WriteLine(b2); //输出False 输入序列中不包含小于4的元素
  9.  
  10. Console.ReadKey();
  11. }

15、All操作符

   All操作符用于判断输入序列中的所有元素是否全部满足指定条件。

   方法原型:

  1.   public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints1 = new int[] { , , };
  4. bool b = ints1.All(p => p > );
  5. Console.WriteLine(b); //输出True 输入序列中的所有元素都大于0
  6.  
  7. Console.ReadKey();
  8. }

16、Contains操作符

  Contains操作符用于判断输入序列中是否含有指定的元素。

   方法原型:

  1. public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value);
  2. public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer);

  第二个方法原型支持自定义比较方法。

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints = new int[] { , , };
  4. bool b = ints.Contains();
  5. Console.WriteLine(b); //输出 True
  6.  
  7. Console.ReadKey();
  8. }

17、Count操作符

  Count操作符用于获取输入序列的元素个数或者满足某个特定条件的元素个数。

  方法原型:

  1. public static int Count<TSource>(this IEnumerable<TSource> source);
  2. public static int Count<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

   代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints = new int[] { , , };
  4. int count1 = ints.Count();
  5. Console.WriteLine(count1); //输出3
  6.  
  7. int count2 = ints.Count(p => p > ); //求大于1的元素个数
  8. Console.WriteLine(count2); //输出1
  9.  
  10. Console.ReadKey();
  11. }

18、LongCount操作符

  LongCount操作符的使用与Count操作符基本相同,不同的是Count操作符以int类型返回元素个数,而LongCount以Long类型返回元素个数。

  方法原型:

  1. public static long LongCount<TSource>(this IEnumerable<TSource> source);
  2. public static long LongCount<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints = new int[] { , , };
  4. long count1 = ints.LongCount();
  5. Console.WriteLine(count1); //输出3
  6.  
  7. long count2 = ints.LongCount(p => p > ); //求大于1的元素个数
  8. Console.WriteLine(count2); //输出1
  9.  
  10. Console.ReadKey();
  11. }

19、Sum操作符

   Sum操作符用于计算输入序列中所有元素的数值总和,使用Sum操作符时需要注意,输入序列中的元素类型只能是int、long、double、或者decimal等数值型数据类型。

   方法原型:

  1. public static decimal? Sum(this IEnumerable<decimal?> source);
  2. public static decimal Sum(this IEnumerable<decimal> source);
  3. public static double? Sum(this IEnumerable<double?> source);
  4. public static double Sum(this IEnumerable<double> source);
  5. public static float? Sum(this IEnumerable<float?> source);
  6. public static float Sum(this IEnumerable<float> source);
  7. public static int? Sum(this IEnumerable<int?> source);
  8. public static int Sum(this IEnumerable<int> source);
  9. public static long? Sum(this IEnumerable<long?> source);
  10. public static long Sum(this IEnumerable<long> source);
  11. public static decimal? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
  12. public static decimal Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
  13. public static double? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector);
  14. public static double Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector);
  15. public static float? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
  16. public static float Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
  17. public static int? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
  18. public static int Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
  19. public static long? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
  20. public static long Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);

   代码示例:

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. int[] ints = new int[] { , , };
  6. int sum1 = ints.Sum();
  7. Console.WriteLine(sum1); //输出 6
  8.  
  9. People p1 = new People(, "张飞", );
  10. People p2 = new People(, "关羽", );
  11. People p3 = new People(, "刘备", );
  12. List<People> listP = new List<People>();
  13. listP.Add(p1);
  14. listP.Add(p2);
  15. listP.Add(p3);
  16. int AgeCount = listP.Sum(s => s.Age);
  17. Console.WriteLine(AgeCount); //输出63
  18.  
  19. Console.ReadKey();
  20. }
  21. }
  22.  
  23. public class People
  24. {
  25. public People(int id, string name, int age)
  26. {
  27. this.Id = id;
  28. this.Name = name;
  29. this.Age = age;
  30. }
  31.  
  32. public int Id
  33. {
  34. get;
  35. set;
  36. }
  37.  
  38. public string Name
  39. {
  40. get;
  41. set;
  42. }
  43.  
  44. public int Age
  45. {
  46. get;
  47. set;
  48. }
  49. }

20、Min操作符

  Min操作符用于获取输入序列中所有元素的最小值,使用Min操作符需要注意,输入序列的元素类型只能是int、long、double、decimal等数值型数据类型或者是实现了IComparable<T>接口的数据类型。

  方法原型:

  1. public static decimal? Min(this IEnumerable<decimal?> source);
  2. public static decimal Min(this IEnumerable<decimal> source);
  3. public static double? Min(this IEnumerable<double?> source);
  4. public static double Min(this IEnumerable<double> source);
  5. public static float? Min(this IEnumerable<float?> source);
  6. public static float Min(this IEnumerable<float> source);
  7. public static int? Min(this IEnumerable<int?> source);
  8. public static int Min(this IEnumerable<int> source);
  9. public static long? Min(this IEnumerable<long?> source);
  10. public static long Min(this IEnumerable<long> source);
  11. public static TSource Min<TSource>(this IEnumerable<TSource> source);
  12. public static decimal? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
  13. public static decimal Min<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
  14. public static double? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector);
  15. public static double Min<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector);
  16. public static float? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
  17. public static float Min<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
  18. public static int? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
  19. public static int Min<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
  20. public static long? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
  21. public static long Min<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);
  22. public static TResult Min<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints = new int[] { , , };
  4. int min1 = ints.Min();
  5. Console.WriteLine(min1); //输出 1
  6.  
  7. People p1 = new People(, "张飞", );
  8. People p2 = new People(, "关羽", );
  9. People p3 = new People(, "刘备", );
  10. List<People> listP = new List<People>();
  11. listP.Add(p1);
  12. listP.Add(p2);
  13. listP.Add(p3);
  14. int AgeMin = listP.Min(s => s.Age);
  15. Console.WriteLine(AgeMin); //输出 20
  16.  
  17. Console.ReadKey();
  18. }

21、Max操作符

  Max操作符用于获取输入序列中所有元素的最大值。与Min的用法基本相同

  方法原型:

  1. public static decimal? Max(this IEnumerable<decimal?> source);
  2. public static decimal Max(this IEnumerable<decimal> source);
  3. public static double? Max(this IEnumerable<double?> source);
  4. public static double Max(this IEnumerable<double> source);
  5. public static float? Max(this IEnumerable<float?> source);
  6. public static float Max(this IEnumerable<float> source);
  7. public static int? Max(this IEnumerable<int?> source);
  8. public static int Max(this IEnumerable<int> source);
  9. public static long? Max(this IEnumerable<long?> source);
  10. public static long Max(this IEnumerable<long> source);
  11. public static TSource Max<TSource>(this IEnumerable<TSource> source);
  12. public static decimal? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
  13. public static decimal Max<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
  14. public static double? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector);
  15. public static double Max<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector);
  16. public static float? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
  17. public static float Max<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
  18. public static int? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
  19. public static int Max<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
  20. public static long? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
  21. public static long Max<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);
  22. public static TResult Max<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints = new int[] { , , };
  4. int max1 = ints.Max();
  5. Console.WriteLine(max1); //输出 3
  6.  
  7. People p1 = new People(, "张飞", );
  8. People p2 = new People(, "关羽", );
  9. People p3 = new People(, "刘备", );
  10. List<People> listP = new List<People>();
  11. listP.Add(p1);
  12. listP.Add(p2);
  13. listP.Add(p3);
  14. int AgeMax = listP.Max(s => s.Age);
  15. Console.WriteLine(AgeMax); //输出 22
  16.  
  17. Console.ReadKey();
  18. }

22、Average操作符

  Average操作符用于计算输入序列中全体元素的平均值。同样,输入序列中的元素类型值能够是int、long、double、decimal等数值类型数据。

  方法原型:

  1. public static decimal? Average(this IEnumerable<decimal?> source);
  2. public static decimal Average(this IEnumerable<decimal> source);
  3. public static double? Average(this IEnumerable<double?> source);
  4. public static double Average(this IEnumerable<double> source);
  5. public static float? Average(this IEnumerable<float?> source);
  6. public static float Average(this IEnumerable<float> source);
  7. public static double? Average(this IEnumerable<int?> source);
  8. public static double Average(this IEnumerable<int> source);
  9. public static double? Average(this IEnumerable<long?> source);
  10. public static double Average(this IEnumerable<long> source);
  11. public static decimal? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
  12. public static decimal Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
  13. public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector);
  14. public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector);
  15. public static float? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
  16. public static float Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
  17. public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
  18. public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
  19. public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
  20. public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints = new int[] { , , };
  4. double ave1 = ints.Average();
  5. Console.WriteLine(ave1); //输出 2
  6.  
  7. People p1 = new People(, "张飞", );
  8. People p2 = new People(, "关羽", );
  9. People p3 = new People(, "刘备", );
  10. List<People> listP = new List<People>();
  11. listP.Add(p1);
  12. listP.Add(p2);
  13. listP.Add(p3);
  14. double AgeAve = listP.Average(s => s.Age);
  15. Console.WriteLine(AgeAve); //输出 21
  16.  
  17. Console.ReadKey();
  18. }

23、Aggregate操作符

  Aggregate操作符用于在输入序列的所有元素上累积执行某个特定额方法。

  方法原型:

  1. public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func);
  2. public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func);
  3. public static TResult Aggregate<TSource, TAccumulate, TResult>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func, Func<TAccumulate, TResult> resultSelector);

  代码示例:

  1. static void Main(string[] args)
  2. {
  3. int[] ints = new int[] { , , ,};
  4. int i = ints.Aggregate((p,next) => p + next); //p代表当前元素,next代表下一个元素
  5. Console.WriteLine(i); //输出10
  6.  
  7. int j = ints.Aggregate(,(p, next) => p + next); //全部加完再加 15
  8. Console.WriteLine(j); //输出11
  9.  
  10. int k = ints.Aggregate(, (p, next) => p * next); //全部乘完再加 120
  11. Console.WriteLine(k); //输出30
  12.  
  13. Console.ReadKey();
  14. }

Linq to Object之非延迟标准查询操作符的更多相关文章

  1. Linq to BBJECT之非延时标准查询操作符

    非延时标准查询操作符是指不具备延时查询特性的标准查询操作符,这些操作符一般用于辅助延时标准查询操作符使用. 1.ToArray操作符 ToArray操作符用于将一个输入序列转换成一个数组. 方法原型: ...

  2. Linq to Object 延迟标准查询操作符

    1.Where 操作符用于限定输入集合中的元素,将符合条件的元素组织声称一个序列结果.2.Select  操作符用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中 ...

  3. Linq to OBJECT延时标准查询操作符

    1.Where 操作符用于限定输入集合中的元素,将符合条件的元素组织声称一个序列结果.2.Select  操作符用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中 ...

  4. LINQ标准查询操作符详解(转)

     一. 关于LINQ       LINQ 英文全称是“Language-Integrated Query”,中文为“语言集成查询”,它是微软首席架构师.Delphi 之父和C# 之父——Anders ...

  5. Linq 标准查询操作符三

    本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰 ...

  6. LINQ 标准查询操作符

    本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰 ...

  7. LINQ入门教程之各种标准查询操作符(一)

    好久之前就想系统的学习下LINQ,好久之前…… 本篇文章主要介绍LINQ等的标准查询操作符,内容取自<LINQ高级编程>,后续还会介绍LINQ to XML ,LINQ to SQL. L ...

  8. LINQ入门教程之各种标准查询操作符(二)

    续上篇LINQ入门教程之各种标准查询操作符(一) LINQ入门教程之各种标准查询操作符(二) 7.  聚合操作符 8.  集合操作符 9.  生成操作符 #region 生成操作符 即从现有序列的值中 ...

  9. 《C#本质论》读书笔记(14)支持标准查询操作符的集合接口

      14.2.集合初始化器 使用集合初始化器,程序员可以采用和数组相似的方式,在集合的实例化期间用一套初始的成员来构造这个集合. 如果没有集合初始化器,就只有在集合实例化后才能显示添加到集合中--例如 ...

随机推荐

  1. P2163 [SHOI2007]园丁的烦恼

    题目 P2163 [SHOI2007]园丁的烦恼 做法 关于拆点,要真想拆直接全部用树状数组水过不就好了 做这题我们练一下\(cdq\)分治 左下角\((x1,y1)\)右上角\((x2,y2)\), ...

  2. 爬虫 spider

    python 2.x # -*- coding: utf-8 -*-import reimport urllib url = 'http://tieba.baidu.com/p/4872795764' ...

  3. 算法(Algorithms)第4版 练习 1.5.5

    对于quick-find,对每个输入数据对,其最少的循环次数为N(sites) 故对于109 sites和106 input pairs,其总的指令次数为:sum = 10^9 * 10^6 * 10 ...

  4. Entity Framework 学习笔记(一)之数据模型 数据库

    关于Entity Framework  数据模型 的开发有三种模式:1.引用数据库方式:2.在VS中新建EF空模型Model 方式:3.Code 方式 Entity Framework  数据模型   ...

  5. 百度地图省市县乡镇街道对应ZOOM级别

    百度地图省市县乡镇街道对应ZOOM级别

  6. 纯CSS3跳动焦点广告轮播特效

    1. [代码] 纯CSS3跳动焦点广告轮播特效 <!--  Author: Developed by Caleb Jacob Author Website: http://iamceege.co ...

  7. php 数据处理--合并,拆分,追加,去重

    1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加. 示例代码: <?php $arr = ...

  8. name lookup of 'res' changed for new ISO 'res' scoping

    #include<iostream> using namespace std; int pow ( int val, int exp ); int main() { int val = 2 ...

  9. 2013VS快捷键

    VS2013常用快捷键: 1.回到上一个光标位置/前进到下一个光标位置  1)回到上一个光标位置:使用组合键“Ctrl + -”: 2)前进到下一个光标位置:“Ctrl + Shift + - ”. ...

  10. jitter buffer QoS的解决方案

    本文主要介绍一种QoS的解决方案,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help QoS出现的背景: 而当网络发生拥塞的时候,所有的数据流都有 ...