List之Where方法

Where这个方法主要在于为List添加过滤条件,使用委托的方式将过滤条件方法传入。委托中传入参数,返回bool类型的结果,如果返回为true,则八元素选择出来,最后把所有满足条件的元素一起返回。
与Array.FindAll类似,他们的却区别在于FindAll是.net 2.0中的东西,而Where是为了linq而实现的扩展方法,是3.5中的东西前者使用的是Predicate委托,而后者却是Func委托。

如:List.Where(Func predicate);

具体案例(List.Where)代码:

           List intList = new List()//创建整型数据集合
            {
                2,5,7,9,10,55,8,24
            };
            var temp = intList.Where(a =>
            {
                return a > 7;
            });//使用lambda表达式,如果集合中整数大于7怎返回true

            foreach (var item in temp)
            {
                Console.WriteLine(item.ToString());
            }

结果:

结果.png

我们通过模仿他方法的处理,写一个类似Where的扩展方法MyWhere,使用方法与Where一致,从中看出where的内部工作原理:

写扩展方法的的三个要素:

  • 公有静态类。
  • 公有静态方法。
  • this关键字,this后面跟类型

具体案例(List.MyWhere)代码:

using System;
using System.Collections.Generic;
using System.Text;

namespace DelegateDemo
{
    //共有静态类
    public static class MyWhereExt
    {
        //公有静态方法
        public static List MyWhere(this List list, Func predicate)
        {
            List result = new List();//创建结果集合,存储符合predicate过滤的元素
            foreach (var item in list)//循环集合
            {
                if (predicate(item))//判断是否符合过滤方法
                {
                    result.Add(item);//符合加入集合
                }
            }
            return result;//返回结果
        }
    }
}

你可能感兴趣的:(List之Where方法)