ListT.Find用法学习

泛型集合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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea导入本地springboot项目

** 点击工具栏的file - new - project from Existing Sources 然后找到项目所在目录&#xff0c;点击该项目的pom.xml文件。一路点击下一步&#xff0c;即可。 **

从零开始的全栈工程师——html篇1.6

浮动与伪类选择器 一、浮动(float) 1.标准文档流 标准文档流是一种默认的状态 浏览器的排版是根据元素的特征&#xff08;块和行级&#xff09; 从上往下 从左往右排版 这就是标准文档流 2.浮动(float)float:left/right; 因为标准文档流会使页面的状态固定 元素会自动从左往…

idea+springboot+mongodb的简单测试使用分享

1&#xff0c;先去官网下载&#xff0c;选择版本&#xff0c;选择Windows&#xff0c;就可以点击下载了。 2&#xff0c;安装mongodb。 下一步安装 “install mongoDB compass” 不勾选&#xff08;当然你也可以选择安装它&#xff0c;可能需要更久的安装时间&#xff09;&a…

project01

the question 最早时间出发为第一架航班&#xff0c;接下来第二架要求&#xff1a;到达日期与第一架航班的出发日期的时间间隔不小于45分钟&#xff0c;且序号最小依次类推将所有航班排完the data the transmission of the data import numpy as np import pandas as pd from p…

idea+springboot+mongodb的实战使用分享

昨天的时候我们先在网上找了测试类&#xff0c;测试了一下mongdb的简单使用&#xff0c;今天就来实地在项目中用一用 没安装mongodb的参考我上一篇文章&#xff1a;ideaspringbootmongodb的简单测试使用分享 其实我们初学者最好是安装一个可视化的工具&#xff0c;这样方便我…

Nginx整合tomcat,实现反向代理和负载均衡

1.Nginx与Tomcat整合,通过Nginx反向代理Tomcat。 Nginx安装路径为&#xff1a;/usr/local//nginx 首先切换路径到&#xff1a;/usr/local//nginx/conf通过命令 vim/usr/local//nginx/conf/nginx.conf打开配置文件 修改Nginx配置文件&#xff1a;/usr/local//nginx/conf/nginx.…

Django REST Framework API Guide 07

本节大纲 1、Permissions 2、Throttling Permissions 权限是用来授权或者拒绝用户访问API的不同部分的不同的类的。基础的权限划分 1、IsAuthenticated 允许任何通过认证的用户访问&#xff0c;拒绝任何没有通过认证的用户。2、IsAuthenticatedOrReadOnly 认证通过的用户有所有…

ElasticSearch Java SpringBoot根据时间范围分组求和

需求是这样的&#xff1a; 近7天的用户登陆统计&#xff0c;根据日期来返回的要是data:[{date&#xff1a;“2021-04-01”,count:“1”}] Autowired private ElasticsearchTemplate elasticsearchTemplate;SimpleDateFormat formater new SimpleDateFormat("yyyy-MM-dd&…

开发springboot项目,遇到的一些问题总结

首先看一下我的项目目录吧 1&#xff0c;添加拦截器 我们做项目肯定要用到拦截器这个功能哈&#xff0c;没登录的话一些页面我们是不能访问的哈&#xff0c;这里是用到了HandlerInterceptor。 分别在图中的位置创建2个目录和2个文件&#xff1a; WebConfig: import org.sp…

elasticsearch根据时间范围查询总条数

根据创建时间来查询总条数 Autowired private ElasticsearchTemplate elasticsearchTemplate;String morning "2021-06-01"; String times "2021-06-02"; BoolQueryBuilder bqb QueryBuilders.boolQuery(); bqb.must(QueryBuilders.rangeQuery("cr…

利用tushare进行对兴业银行股价的爬取,并使用numpy进行分析

import sysimport tushare as tsimport numpy as npdatats.get_h_data(601066)print(data)#读出兴业银行7列数据date open high close low volume amount data.to_csv(E:/csv statistic/day/601066.csv) 把读取的股票数据存入某个内存空间中 #开始读某…

elasticsearch根据某个字段来查询,以及通过时间筛选

elasticsearch根据某个字段来查询&#xff0c;以及通过时间筛选 String startTime "2021-06-01"; String endTime "2021-06-02"; BoolQueryBuilder bqb QueryBuilders.boolQuery(); bqb.must(QueryBuilders.matchPhraseQuery("userId",userSt…

centOS下lnamp安装

首先安装apache,mysql ,最后安装php 1>apache安装 安装&#xff1a;yum install -y httpd 运行&#xff1a;/bin/systemctl start httpd.service 执行完运行命令之后是看不到效果的&#xff0c;这时候再输入查看apache服务状态命令来查看服务是否已经启动&#xff1a; 查看状…

java使用itext填充pdf模板,超简单教学,有手就行

java使用itext填充pdf模板1、先去建一个Word文件&#xff0c;设置好想要填充的地方&#xff0c;留好位置&#xff0c;设置好下划线2、将Word另存为pdf3、打开电脑中的Adobe Acrobat pro DC&#xff08;这个应该win10 都有&#xff0c;搜索一下就出来了&#xff09;&#xff0c;…

java使用itext将图片放到pdf模板的指定位置

java使用itext将图片放到pdf模板的指定位置前面的准备步骤可以参考我的上一篇文章这里直接上代码这里用的图片是路径的形式&#xff0c;还有种情况是图片是base64的时候&#xff0c;这种情况就需要转一下图片格式了&#xff0c;具体代码如下&#xff1a;前面的准备步骤可以参考…

KVM使用

这里使用的是Ubuntu18.04桌面版虚拟机 关于KVM可以看一下我之前的博客,有一些简单的介绍。 1.在打开虚拟机之前先开启此虚拟机的虚拟化功能。 2.安装KVM及其依赖项 wywy-virtual-machine:~$ sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager 3.安装完成…

mybatis-plus3.5.1学习笔记

1、ID 1>id策略有6种&#xff1a; 想要id自增就在id上面添加 TableId(type IdType.AUTO)mybaits-plus的默认的主键策略是&#xff1a; TableId(type IdType.ID_WORKER)这样生成的是19位的数字id。 有的人喜欢使用UUID&#xff1a; TableId(type IdType.UUID)2、cre…

Python网络编程之socket编程

什么是Socket&#xff1f; Socket是应用层与TCP/IP协议族通信的中间软件抽象层&#xff0c;它是一组接口。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议族隐藏在Socket接口后面&#xff0c;对用户来说&#xff0c;一组简单的接口就是全…

idea必装插件

1、lombok 这个是自动生成getter,setter的插件工具&#xff0c;现在idea已经集成了&#xff0c;好像不用单独去插件市场下载。 2、Free MyBatis Tool 官方话术&#xff1a; Free MyBatis Tool 是一款增强idea对mybatis支持的插件 主要功能如下&#xff1a; 生成mapper xml文…

mongodb查询分页优化

mongodb查询分页优化 转自&#xff1a;https://blog.csdn.net/chunqiuwei/article/details/11669885项目中需要用mongodb来进行数据测存储和查询,其中涉及到分页:分页的要求如下 1)每页显示10条 由于数据量太大,cursor.count()获取的符合条件的数据量也很大,导致分页得分好几万…