美文网首页
List之Where方法

List之Where方法

作者: Memoyu | 来源:发表于2019-04-22 14:44 被阅读0次

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

如:List.Where(Func<T, bool> predicate);

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

           List<int> intList = new List<int>()//创建整型数据集合
            {
                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<T> MyWhere(this List<T> list, Func<T, bool> predicate)
        {
            List<T> result = new List<T>();//创建结果集合,存储符合predicate过滤的元素
            foreach (var item in list)//循环集合
            {
                if (predicate(item))//判断是否符合过滤方法
                {
                    result.Add(item);//符合加入集合
                }
            }
            return result;//返回结果
        }
    }
}

相关文章

网友评论

      本文标题:List之Where方法

      本文链接:https://www.haomeiwen.com/subject/basegqtx.html