C#-Linq源码解析之Any

前言

在Dotnet开发过程中,Any作为IEnumerable的扩展方法,十分常用。本文对Any方法的关键源码进行简要分析,以方便大家日后更好的使用该方法。

使用

Any 确定序列中是否包含元素或存在元素满足指定条件。

看这样一个例子,我们判断集合中是否存在元素

List<UserInforMation> lstUserInforMations = new List<UserInforMation>();
bool flag = lstUserInforMations.Any();
flag= lstUserInforMations.Any(o=>o.Sex=="男");

当然flag都为false。

我们现在给集合赋值

//赋值
lstUserInforMations = new List<UserInforMation> 
{new UserInforMation{UserName="张三",Sex="男"},new UserInforMation{UserName="李四",Sex="女"},
};
flag = lstUserInforMations.Any();
flag = lstUserInforMations.Any(o => o.Sex == "男");

只要有一个条件满足,当然就会返回true了

源码解析

第一个方法

public static bool Any<TSource>(this IEnumerable<TSource> source)
参数
  • source 元素的类型

返回值
  • bool

该方法表示 只要有一个元素存在就返回True,否则返回false。

IEnumerable修饰我们的源元素类型,那么我们就知道源元素是一个 可以获得循环访问集合的枚举器那么我们就可以使用GetEnumerator这个方法进行迭代了。

然后我们在使用MoveNext方法,来遍历集合的元素!

源码:
public static bool Any<TSource>(this IEnumerable<TSource> source)
{if (source == null){throw null;}using (IEnumerator<TSource> enumerator = source.GetEnumerator())
{if (enumerator.MoveNext()){eturn true;}}return false;
}

第二个方法

public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
参数
  • source 元素的类型

  • Func<TSource, bool> predicate 该委托用于判断某元素是否满足某个条件,这个func委托接收一个和源元素相同的参数类型,并返回一个bool!

返回值
  • bool

我们在第一个方法上改进,使用foreach遍历源元素,如果有一个满足我们就返回true

源码:
public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate){if (source == null){throw null;}if (predicate == null){throw null;}foreach (TSource item in source){if (predicate(item)){return true;}}return false;
}

总结

在我们了解了any的源码后,我们在判断集合为空的时候是不是使用Any() 比Count() 更好一点了呢?欢迎留言讨论

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

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

相关文章

python_getopt解析命令行输入参数的使用

[cpp] view plaincopyprint? import getopt import sys config { "input":"", "output":".", } #getopt三个选项&#xff0c;第一个一般为sys.argv[1:],第二个参数为短参数&#xff0c;如…

五、登录页倒计时制作《仿淘票票系统前后端完全制作(除支付外)》

一、登录功能的实现 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 上一节我们已经完成了基本页面的制作&#xff0c;在本节中&#xff0c;我们将会开始完成登录功能的实现。 实现登录功能需要增加一个用户组件&#xff1a; 这个用户组件是需要选择…

【MATLAB统计分析与应用100】案例001:matlab使用Importdata函数导入文本txt数据

配套实验数据包下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1T4zUFmCIOCKIisdGRQPddg?pwdddi1 文章目录1. 调用importdata函数读取文件中的数据2. 调用importdata函数读取文件数据&#xff0c;返回结构体变量x3. 调用importdata函数读取文件中的数据&#xff0c…

TextView的部分点击事件和点击事件

1.在TextView中实现部分点击 我在activity中使用了clickablespan这个类&#xff0c;然后完全按照视频上的操作下来&#xff0c;发现点击时不响应&#xff0c;于是我便设置了电话的链接&#xff0c;发现这时点击 自己设置的区域就会响应&#xff0c;但是如果我把电话链接删了&am…

C语言试题四十之使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

Meta http-equiv属性详解

Meta http-equiv属性详解 博客分类&#xff1a; Web综合HTML浏览器IECache搜索引擎 http-equiv顾名思义&#xff0c;相当于http的文件头作用&#xff0c;它可以向浏览器传回一些有用的信息&#xff0c;以帮助正确和精确地显示网页内容&#xff0c;与之对应的属性值为content&am…

MAUI 入门教程系列(3.多目标平台)

前言如果您是第一次创建MAUI项目, 并且在之前也并没有接触过Xamarin.Forms应用, 或许你并不知道MAUI的强大优势, 在原来的Xamarin.Forms当中, 我们基于不同平台的项目他们是单独维护的。如下所示:因为如此, 你需要维护不同平台的项目。包括每个项目当中包含的资源、图像、属性定…

关于质量的联想:消费示范效应

IT业界有新闻说&#xff0c;根据可靠性数据研究专家Rescue.com发布的今年一季度可靠性报告&#xff0c;“五大电脑公司中&#xff0c;联想-IBM的分数高居首位&#xff0c;第二名是华硕&#xff0c;之前的可靠性冠军苹果跌落第三&#xff0c;东芝、惠普-康柏则排在第五”。大部分…

六、注册页功能制作《仿淘票票系统前后端完全制作(除支付外)》

一、注册块内容制作 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 上一节已经知道了如何制作登录块内容&#xff0c;但是咱们先做还没有注册&#xff0c;所以就测试不了登录块功能&#xff0c;现在咱们同样的&#xff0c;在注册块中添加一个变量和一…

【MATLAB统计分析与应用100例】案例002:matlab使用xlsread函数读取excel中的数据

文章目录 1. 读取文件excel表中单元格A2:H4中的数据2. 读取excel第1个工作表中单元格A2:C3中的数据,将数据分别加1后返回3. 读取excel第1个工作表中单元格A2:H2中的数据,将读取到的数据分别加1,返回数值矩阵num,文本矩阵txt,元胞数组raw,变换后数值矩阵X1. 读取文件excel…

美图秀秀首页界面按钮设计(二)

本文实现美图秀秀首页中的按钮&#xff0c;它包含3张图片和一个文本。通过开发按钮&#xff0c;我们可以学到iOS的自定义控件&#xff0c;绘制图片和文本的知识。【声明&#xff1a;本博客只能用作学习用途&#xff0c;不得用于商业用途&#xff0c;图片资源均来自官方&#xf…

C语言试题四十一之请编写一个函数,用来删除字符串中的所有空格。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

第三方免费加固横向对比

前言 基于java开发的android应用由于其语言的特性&#xff0c;所以很容易被反编译&#xff0c;虽然android提供了proguard&#xff0c;但是也只是增加了源码阅读的难度&#xff0c;其中业务逻辑依旧可以分析得出。有些人通过各种破解手段将apk文件破解、反编译&#xff0c;然后…

(02).NET MAUI实战 布局

1.概要既然要做实战开发会建项目之后就需要认识布局控件了&#xff0c;本篇文章分享.NET MAUI中的一些基础常用的布局控件。GridStackLayoutFalyxLayoutAbsoluteLayout2.详细内容(1)Grid语法&#xff1a;<Grid RowDefinitions"50,50,50,50" RowSpacing"10&qu…

[Javascript] Avoid Creating floats if they are not needed

https://channel9.msdn.com/Series/Practical-Performance-Tips-to-Make-Your-HTMLJavaScript-Faster/06?WT.mc_id13400-DEV-sitepoint-article24 转载于:https://www.cnblogs.com/yoyohappy/p/5884629.html

七、后台入口及添加影院实现《仿淘票票系统前后端完全制作(除支付外)》

一、登录后台窗口显示与跳转 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 上一节已经完成了登录和注册功能&#xff0c;在这一节咱们将会实现对应的后台入口进入和一些后台功能的制作。 首先咱们需要记录一下登录的UID&#xff0c;因为咱们后台界面…

正则表达式 学习笔记4.3

下面看看逆序环视结构&#xff1a;publicclassGeneralSix { publicstaticvoidmain(String[] args) { String[] strings newString[]{"see","bee","tee"};String[] regexs newString[]{"(?<s)ee","(?<!s)ee"}; for…

【MATLAB统计分析与应用100例】案例003:matlab调用smooth函数进行加噪数据的平滑处理

文章目录 1. 产生加噪正弦波信号,绘制加噪波形图2. 利用移动平均法对加噪信号进行平滑处理,绘制平滑波形图3. 利用lowess方法对加噪信号进行平滑处理,绘制平滑波形图4. 利用rlowess方法对加噪信号进行平滑处理,绘制平滑波形图5. 利用loess方法对加噪信号进行平滑处理,绘制…

C语言试题四十二之假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

linux curl模拟登录网页

有时在批量抓取网站页面内容时&#xff0c;是需要处于登录状态的&#xff0c;否则无法获取。curl这个强大的工具可以完成这个工作。之前最好也先了解一下http POST方法&#xff0c;网站登录大都是用这个办法。本文基本上参考这篇文章,来自依云s Blog&#xff0c;是archlinux中文…