泛型集合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. [正则表达式]文本框输入内容控制
  2. [BZOJ4557][JLOI2016]侦查守卫
  3. ASP.NET Core 在 Swagger UI 中显示自定义的 Header Token
  4. sip gw功能包括_完整SIP/SDP媒体协商概论-SIP/WebRTC概要
  5. 取消对 null 指针“l”的引用。_C语言编程笔记丨C 语言指针 5 分钟教程
  6. [渝粤教育] 郑州航空工业管理学院 航空概论 参考 资料
  7. 熊猫的python小课账号_学习python中的pandas有没有好的教程推荐?
  8. 计算机专业英语第三章在线测试,《计算机专业英语》第03章在线测试
  9. Atitit .html5刮刮卡的gui实现总结
  10. 海南大学信号与系统838报考高频问题整理(4)
  11. Because You Loved Me歌词
  12. 毕业设计-基于微信小程序的校园二手书籍交易系统
  13. 深入理解Toll-Free Bridging
  14. macOS键盘定制神器Karabiner Elements
  15. 超好用的画图工具推荐
  16. HTML中的“雪碧图“详解
  17. 自签名SSL证书的安全隐患和风险
  18. 25 年前 Java 诞生,把你对她的热爱大声说出来好吗
  19. 算法还是算力?周志华微博引爆深度学习的“鸡生蛋,蛋生鸡”问题
  20. html怎么创建盒子,html布局(盒子)

热门文章

  1. java excel api及详细教程_针对Java Excel API及详细教程
  2. 排序算法——归并排序的相关问题
  3. oracle状态blocked,oracle 监听状态为BLOCKED
  4. (priority_queue)自定义优先级
  5. linux闹钟软件下载,电量充满警示闹铃
  6. java使用计算器完成加法、减法运算
  7. html5新增的type类型,html5新增的type类型
  8. matlab搭建的应用层架构逻辑,软件设计的三层架构
  9. 计算机动画制作 教学设计,《设置动画效果》教学设计
  10. 【OpenCV 例程200篇】22. 图像添加非中文文字