.net高级技术——集合常用高级扩展方法

接下来,学习了委托以后,我们来看看集合常用的扩展方法,里面的很多扩展方法支持委托的使用

声明一个整形数组

            int[] nums = { 1, 24, 35, 3, 423, 432, 24 };

Where(支持委托)


            IEnumerable<int> data = nums.Where(a => a > 400);

Select(支持委托)

            IEnumerable<int> data= nums.Select(p => p*2);

First(获取第一个,如果一个都没有则异常)

            //int data = nums.First();
            //没有数据怎么办
            int[] nums2 = { };
            int data = nums2.First();//System.InvalidOperationException:“序列不包含任何元素” 会抛出异常

FirstOrDefault(获取第一个,如果一个都没有则返回默认值)

            int data = nums.FirstOrDefault();//1
            int data = nums2.FirstOrDefault();//0 如果一个元素都没有,则返回对应类型的默认值.
            string[] str1 = { };//如果是string数组,那么值是多少呢
            string data = str1.FirstOrDefault();//为null
            Console.WriteLine(data);

Single (获取唯一一个值,没有或者多个值抛异常)


            int[] nums2 = { 1 };
            int[] nums3 = { };
            //Console.WriteLine(nums.Single());//System.InvalidOperationException:“序列包含一个以上的元素”
            //Console.WriteLine(nums2.Single());//1
            Console.WriteLine(nums3.Single());//System.InvalidOperationException:“序列不包含任何元素”

SingleOrDefault (获取唯一一个,如果没有则返回默认值,如果有多个则异常)

            int[] nums2 = { 1 };
            int[] nums3 = { };
            //Console.WriteLine(nums.SingleOrDefault());//System.InvalidOperationException:“序列包含一个以上的元素”
            //Console.WriteLine(nums2.SingleOrDefault());//1
            Console.WriteLine(nums3.SingleOrDefault());//0

OrderBy(   按根据某个键按升序对序列的元素进行排序。)

            IEnumerable<int> data = nums.OrderBy(s => s);
            foreach (var item in data)
            {
                Console.WriteLine(item);
            }

ToArray(  创建一个数组,从 System.Collections.Generic.IEnumerable`1。
)

            int[] newData = data.ToArray();

ToList(创建 System.Collections.Generic.List`1 从 System.Collections.Generic.IEnumerable`1。)

还有Max,Min,Sum这些扩展方法

因为这些扩展方法返回类型都是IEnumerable的,所以可以连续进行调用

比如

            int data = nums.OrderBy(s => s).Sum();
            int data2 = nums.OrderBy(s => s).Min();
            int data3 = nums.OrderBy(s => s).Max();

最后的完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 常用扩展方法
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] nums = { 1, 24, 35, 3, 423, 432, 24 };
            //IEnumerable<int> data = nums.Where(a => a > 400);
            //IEnumerable<int> data= nums.Select(p => p*2);
            //foreach (var item in data)
            //{
            //    Console.WriteLine(item);
            //}
            //int data = nums.First();
            //没有数据怎么办
            //int[] nums2 = { };//1
            // int data = nums2.First();//System.InvalidOperationException:“序列不包含任何元素” 会抛出异常
            //int data = nums.FirstOrDefault();//1
            //int data = nums2.FirstOrDefault();//0 如果一个元素都没有,则返回对应类型的默认值.
            //string[] str1 = { };//如果是string数组,那么值是多少呢
            //string data = str1.FirstOrDefault();//为null
            //Console.WriteLine(data);

            //int[] nums2 = { 1 };
            //int[] nums3 = { };
            Console.WriteLine(nums.Single());//System.InvalidOperationException:“序列包含一个以上的元素”
            Console.WriteLine(nums2.Single());//1
            //Console.WriteLine(nums3.Single());//System.InvalidOperationException:“序列不包含任何元素”

            //int[] nums2 = { 1 };
            //int[] nums3 = { };
            //Console.WriteLine(nums.SingleOrDefault());//System.InvalidOperationException:“序列包含一个以上的元素”
            //Console.WriteLine(nums2.SingleOrDefault());//1
            /*            Console.WriteLine(nums3.SingleOrDefault());*///0

            /*
            1
            3
            24
            24
            35
            423
            432
            */
            //IEnumerable<int> data = nums.OrderBy(s => s);
            int data = nums.OrderBy(s => s).Sum();
            int data2 = nums.OrderBy(s => s).Min();
            int data3 = nums.OrderBy(s => s).Max();
            Console.WriteLine(data);//942
            //int[] newData = data.ToArray();
            //List<int> list = newData.ToList();
            //foreach (var item in data)
            //{
            //    Console.WriteLine(item);
            //}
            Console.ReadKey();

        }
    }
}

---本博客是学习以后记录知识,如有侵权,请联系删除!!!

Guess you like

Origin blog.csdn.net/qq_33407246/article/details/88909594