1,ElementAt 方法

2,ElementAtOrDefault 方法

3,All 方法

4,Any 方法

5,Contains 方法

6,Count 方法

7,LongCount 方法

8,Aggregate 方法

9,Sum 方法

10,Average 方法

11,Min 方法

12,Max 方法

获取序列中指定索引的元素,如果索引超过范围将引发异常。

        private void ElementAtDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

            var name = names.ElementAt(1);
            Console.WriteLine("index of 1 is:{0}", name);

            try
            {
                var name2 = names.ElementAt(10);//index超界了,异常
            }
            catch (ArgumentOutOfRangeException e)
            {
                Console.WriteLine(e.Message);
            }
            // index of 1 is:李莫愁
            //在 System.ArgumentOutOfRangeException 中第一次偶然出现的“mscorlib.dll”类型的异常
            //索引超出范围。必须为非负值并小于集合大小。
            //参数名: index
        }

2,ElementAtOrDefault 方法

获取序列中指定索引的元素。如果索引超过范围,将返回数组元素的默认值。

        private void ElementAtOrDefalutDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

            var name = names.ElementAtOrDefault(1);
            Console.WriteLine("index of 1 is:{0}", name);//李莫愁

            try
            {
                var name2 = names.ElementAtOrDefault(10);//没有异常,返回string类型的默认值null
                Console.WriteLine("index of 10 is:{0}", name2);//name2=null
            }
            catch (ArgumentOutOfRangeException e)
            {
                Console.WriteLine(e.Message);
            }
        }

3,All 方法

序列中的全部元素都满足条件,返回true。否则为false。

        private void AllDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

            var b = names.All(s => s.Length >= 2);//所有人的名字都大于等于2个字吗?
            Console.WriteLine(b);//true

            b = names.All(s => s.Length >= 3);//所有人的名字都大于等于3个字吗?
            Console.WriteLine(b);//false        
        }

4,Any 方法

检查序列中的元素是否存在满足条件

很显然,只要有一个满足条件,它都是true。一个都没有满足条件的为false。

        private void AnyDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };
            string[] emptys = { };
            var b1 = names.Any();
            var b2 = emptys.Any();
            var b3 = names.Any(s => s.IndexOf("") > -1);
            Console.WriteLine("b1={0}", b1);//true
            Console.WriteLine("b2={0}", b2);//false
            Console.WriteLine("b3={0}", b3);//true
        }

5,Contains 方法

确定元素是否在序列中。

        private void ContainsDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

            var b1 = names.Contains("黄蓉");
            Console.WriteLine("b1={0}", b1);//true

            //注意:如果传入自定义的IEqualityComparer,可以改变相等性的判定
        }

6,Count 方法

获取序列元素的个数,或指定条件的元素的个数。

返回的类型是int32.

        private void CountDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

            var cnt = names.Count();
            var cnt2 = names.Count(s => s.IndexOf("") > -1);
            Console.WriteLine("返回个数的类型是:{0},超过Int.MaxValue将会溢出报错", cnt.GetType().FullName);
            Console.WriteLine("cnt={0}", cnt);//5
            Console.WriteLine("cnt2={0}", cnt2);//2
            //返回个数的类型是:System.Int32,超过Int.MaxValue将会溢出报错
            //cnt=5
            //cnt2=2
        }

7,LongCount 方法

获取序列元素的个数,或指定条件的元素的个数。

返回的类型是int64.

        private void LongCountDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

            var cnt = names.LongCount();
            var cnt2 = names.LongCount(s => s.IndexOf("") > -1);
            Console.WriteLine("返回个数的类型是:{0},超过Int64.MaxValue将会溢出报错", cnt.GetType().FullName);
            Console.WriteLine("cnt={0}", cnt);//5
            Console.WriteLine("cnt2={0}", cnt2);//2
            //返回个数的类型是:System.Int64,超过Int64.MaxValue将会溢出报错
            //cnt=5
            //cnt2=2
        }

8,Aggregate 方法

Aggregate用于将序列的元素进行累加。这里的累加和Sum有所不同,它能实现Sum的功能,也能实现字符串的累加等自定义操作。

它的英文是聚合的意思。

        private void AggregateDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

            var concat = names.Aggregate((a, b) => string.Format("{0},{1}", a, b));

            Console.WriteLine(concat);
            //输出:
            //郭靖,李莫愁,欧阳晓晓,黄蓉,黄药师
        }

9,Sum 方法

计算数字序列的和。如果元素不是数字类型,可以利用转换函数,转换成数字类型在求和。

        private void SumDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };
            int[] lst1 = { 10, 20, 30 };
            int?[] lst2 = { 10, null, 30 };

            int i1 = lst1.Sum();
            int? i2 = lst2.Sum();

            var concat = names.Sum(s => s.Length);
            Console.WriteLine(i1);//60
            Console.WriteLine(i2);//40
            Console.WriteLine(concat);//14
        }

10,Average 方法

对数字类型的序列求平均值。

        private void AverageDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };//随意类型
            int[] lst1 = { 10, 20, 30 };//普通数字类型
            int?[] lst2 = { 10, null, 30 };//可空数字类型

            double i1 = lst1.Average();
            double? i2 = lst2.Average();

            var concat = names.Average(s => s.Length);
            Console.WriteLine(i1);//20
            Console.WriteLine(i2);//20 null的那个元素没计算到总个数中
            Console.WriteLine(concat);//2.8
        }

11,Min 方法

返回序列中得最小值。

如果元素是非数字的,只要实现了IComparabe<T>接口,就可以找出最小的值。

        private void MinDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };//随意类型
            int[] lst1 = { 10, 20, 30 };//普通数字类型
            int?[] lst2 = { 10, null, 30 };//可空数字类型

            double i1 = lst1.Min();
            double? i2 = lst2.Min();

            var concat = names.Min();
            Console.WriteLine(i1);//10
            Console.WriteLine(i2);//10 注意:null并不是最小值哦!
            Console.WriteLine(concat);//郭靖
        }

12,Max 方法

返回序列中得最大值。

如果元素是非数字的,只要实现了IComparabe<T>接口,就可以找出最大的值。

        private void MaxDemo()
        {
            string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };//随意类型
            int[] lst1 = { 10, 20, 30 };//普通数字类型
            int?[] lst2 = { 10, null, 30 };//可空数字类型

            double i1 = lst1.Max();
            double? i2 = lst2.Max();

            var concat = names.Max();
            Console.WriteLine(i1);//30
            Console.WriteLine(i2);//30 
            Console.WriteLine(concat);//欧阳晓晓
        }

 

相关文章:

  • 2021-12-18
  • 2022-12-23
  • 2021-12-31
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-06
  • 2021-10-05
  • 2022-01-02
  • 2021-12-22
  • 2022-12-23
  • 2021-12-12
相关资源
相似解决方案