泛型集合List<T>中的Find函数用于查找集合中符合指定条件的元素..相比foreach遍历元素,用Find函数查找,代码更简洁.

函数原型如下:

public T Find(Predicate<T> match);

其中Predicate为C#定义好的委托,原型如下:

public delegate bool Predicate<in T>(T obj);

所以,List.Find函数的参数,就是一个 返回值为bool,入参为T类型的函数.当然,可以是命名函数也可以是匿名函数或Lambda表达式..

示例如下:

//定义一个Person类

class Person

    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Gender { get; set; }
    }
class Program
    {
        //定义一个Predicate类型的委托变量
        private static Predicate<Person> pre = new Predicate<Person>(MyPredicate);
        private static bool MyPredicate(Person p)
        {
            bool result = false;
            if (p.Name == "张三")
                result = true;
            return result;
        }
        static void Main(string[] args)
        {
            try
            {
                 List<Person> lstPerson = new List<Person>()
                {
                new Person { Name = "张三", Age = 10, Gender = "M" },
                new Person { Name = "李四", Age = 11, Gender = "M" },
                new Person { Name = "王五", Age = 12, Gender = "M" },
                new Person { Name = "赵六", Age = 13, Gender = "M" },
                new Person { Name = "张三", Age = 33, Gender = "F" }
                };
                Person p1 = lstPerson.Find(pre);//1、命名函数
                Person p2 = lstPerson.Find(delegate (Person s) { return s.Name.Equals("王五"); });//2、匿名函数
                Person p3 = lstPerson.Find(s => { return s.Name.Equals("赵六"); });//3、Lambda表达式
Person p4 = lstPerson.Find(s => s.Name.Equals("赵六"));//4、Lambda表达式的简洁写法
                Console.WriteLine($"姓名:{p1.Name},年龄:{p1.Age}性别:{p1.Gender}");
                Console.WriteLine($"姓名:{p2.Name},年龄:{p2.Age}性别:{p2.Gender}");
                Console.WriteLine($"姓名:{p3.Name},年龄:{p3.Age}性别:{p3.Gender}");
            }
            catch (Exception ea)
            {
                Console.WriteLine($"异常:{ea.Message}");
            }
            Console.ReadKey();
        }
    }
运行结果如下:

PS:List<T>.Find 返回的是符合条件的一个元素.若没有,则返回T类型的默认值

List<T>.FindLast  返回符合条件最后一个元素.若没有,则返回T类型的默认值

List<T>.FindAll 返回符合条件的元素集合,即List<T>的子集.

List<T>.FindIndex 返回符合条件的第一个元素的下标.下标从0开始.. 若没有,则返回-1

List<T>.FindLastIndex 返回符合条件的最后一个元素的下标.下标从0开始.. 若没有,则返回-1

转载于:https://www.cnblogs.com/lylongs/p/9650465.html

ListT.Find用法学习相关推荐

  1. mysql explain 实例_Mysql实例mysql explain用法学习

    <Mysql实例mysql explain用法学习>要点: 本文介绍了Mysql实例mysql explain用法学习,希望对您有用.如果有疑问,可以联系我们. 导读:本节内容:mysql ...

  2. raphael用法学习

    最近公司项目中需要绘图,就去学习了raphael插件,先介绍下这个插件吧 Raphael 是一个用于在网页中绘制矢量图形的 Javascript 库.它使用 SVG W3C 推荐标准和 VML 作为创 ...

  3. ModelAndView绑定数据模型配合Thymeleaf渲染数据用法学习

    分开介绍,大致说一下ModelAndView ModelAndView是Spring MVC里面重要的组成部分.分为两部分Model和View,Model是后端的返回值,View指的视图.先回忆一下当 ...

  4. SQL语言的基本用法——学习笔记

    SQL语言的基本用法   结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系 ...

  5. Typedef用法学习

    不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些 ...

  6. C# ListT泛型用法

    C# List<T>用法 所属命名空间:using System.Collections.Generic; List<T>类是  ArrayList 类的泛型等效类. 该类使用 ...

  7. strace用法学习

    一.strace是什么? 按照strace官网的描述,strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进程状态变更等 ...

  8. Linux中rename和mv命令用法学习修改文件名区别和总结

    如何用命令修改文件名呢?在Linux下可以用rename命令,当然还可以使用mv命令,这里分享下Linux rename命令的用法. 有一部分人说Linux下没有rename命令,建议大家用mv命令. ...

  9. Android事件总线 EventBus3.0用法学习

    http://blog.csdn.net/itachi85/article/details/52205464 1.EventBus的三要素 Event:事件,可以是任意类型的对象. Subscribe ...

最新文章

  1. Java 16 正式发布!你还学得动吗?
  2. VTK:可视化之MovableAxes
  3. URAL1204. Idempotents(扩展欧几里得)
  4. Thrift第三课 编写脚本
  5. android自动跑马灯,Android-最强跑马灯
  6. 史上最全的常用事件:移动端事件及PC端:鼠标/键盘/表单事件
  7. 图像处理基本概念——卷积,滤波,平滑
  8. 【数据库原理及应用教程】【数据库系统的体系结构】【1.4-1.6】
  9. 自动控制原理分析工作原理以及方框图做题过程
  10. 从7654浏览器卸载到安装360安全卫士
  11. python 读取TXT文件数据(字符或数值)存放在numpy数组中以及训练集测试集的处理(1)(个人笔记)
  12. gif表情制作软件怎么制作gif动图
  13. LVS负载均衡群集(NAT模式)
  14. 我理解的MOOC的重要性
  15. 时间都去哪了--你统计过你每天花在手机上的时间么?
  16. 电路中滤波电容和退耦电容_怎么分清滤波电容、去耦电容、旁路电容
  17. Elasticsearch生产实战(ik分词器、拼音分词、自动补全、自动纠错)
  18. 商业级saas开源电商小程序项目
  19. 踔厉奋发,笃行不怠!CASAIM 喜获2022年创新指标完成奖
  20. LoadRunner12_脚本中运行JavaScrip

热门文章

  1. Docker exec 命令执行出错, 显示 the input device is not aTTY 的解决办法
  2. html+dom+深入,DOM 深入学习 - 1
  3. 设计模式---适配器设计模式
  4. php求链表中位数,先给伸手党的php链表遍历求和
  5. ajax 链接java_如何使用ajax将下拉菜单链接到表
  6. php相隔几分钟变换随机数,PHP怎么固定随机出号几分钟时间再变?
  7. 资阳停车场系统推荐_详细讲解停车场管理车牌识别系统安装
  8. 为什么说ip协议是无连接协议
  9. php里面没有mssql,为什么没有正确使用PHP / MSSQL的日期/时间?
  10. Java 获取链表的元素