C# List<T>的Contains、Exists、Any、Where性能对比

这篇具有很好参考价值的文章主要介绍了C# List<T>的Contains、Exists、Any、Where性能对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、Contains方法

Contains方法的作用是检查List中是否包含指定元素,其代码实现如下

List<string> list = new List<string>() { "a", "b", "c", "d" };
bool isExists = list.Contains("a");

Contains方法的执行时间非常短,一般在1毫秒以下。因为该方法使用了二分查找算法,在大多数情况下,找到指定元素只需要遍历集合的一半即可,所以执行速度非常快。

2、Exists方法

Exists方法是一个实例方法,可以使用委托作为它的参数来查找元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };
bool isExists = list.Exists(x => x == "a");

由于Exists方法的参数是一个委托,所以其执行时间比Contains方法要长。但是,当集合中元素比较多且查找条件复杂时,Exists方法的执行时间可能比Contains方法更短。

3、Any方法

Any方法用于判断集合中是否存在满足指定条件的元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };
bool isExists = list.Any(x => x == "a");

Any方法的执行时间与Exists方法相当,因为它们两个的代码实现方式都是一样的。

4、Where方法

Where方法用于筛选符合指定条件的元素,其代码实现如下:

List<string> list = new List<string>() { "a", "b", "c", "d" };
var result = list.Where(x => x == "a");

Where方法的返回值是一个IEnumerable,因为它只是筛选符合指定条件的元素,而并没有直接返回元素本身。由于Where方法是延迟求值的,所以需要使用foreach等方式来获取其返回值。

由于Where方法返回的是延迟求值的IEnumerable,其执行时间比其他方法要长一些。但是,如果需要对集合进行复杂的筛选操作时,Where方法是一个非常好用的API。文章来源地址https://www.toymoban.com/news/detail-796522.html

到了这里,关于C# List<T>的Contains、Exists、Any、Where性能对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column异常处理

    使用联表查询时,group by两个字段出现了错误 意思是select字段里包含了没有被group by 条件唯一确定的字段。 MySQL版本5.7之后会检测函数依赖,默认启用的模式是ONLY_FULL_GROUP_BY,使用GROUP BY 语句违背了sql_mode=only_full_group_by。该模式的意思是只有确定唯一字段的group by才能执行。

    2024年01月24日
    浏览(50)
  • MySQL报错 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column解决方法

    使用GROUP BY 语句违背了sql_mode=only_full_group_by,在MySQL数据库版本为5.7以上的版本,默认开启了 ONLY_FULL_GROUP_BY SQL模式,在此模式下,对于group by操作,如果在select语句中的查询列没有在group by中出现,那么这个SQL就是非法的,因为列不在group by语句中,所以设置了sql_mode=only_full_

    2024年02月04日
    浏览(44)
  • MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column whic

    报错信息及语句如下 字面翻译: SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“grades.order_id” 它在功能上不依赖于 GROUP BY 子句中的列; 这与 sql_mode=only_full_group_by 不兼容 使用GROUP BY 语句违背了 sql_mode=only_full_group_by。因为mysql版本5.7之后默认的模式是 ONLY_F

    2024年02月07日
    浏览(43)
  • 【C++进阶(五)】STL大法--list模拟实现以及list和vector的对比

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C++从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C++   🔝🔝 本篇文章立足于上一篇文章: list深度剖析(上) 请先阅读完上一篇文章后再阅读这篇文章! 本章重点: 本章着重讲解list的模拟实现 list模拟实

    2024年02月09日
    浏览(51)
  • C# List 详解一

    目录 一、概述 二、构造函数 1.List()   2.List(IEnumerable)     3.List(Int32)     三、属性 1.Capacity     2.Count     3.Item[Int32]     四、方法 1.Add(T)     2.AddRange(IEnumerable)     3.AsReadOnly()     4.BinarySearch(T) C# List 文档(一) 1.Add(T),2.AddRange(IEnumerable),3.AsReadOnly(),4.BinarySearch(

    2024年02月16日
    浏览(38)
  • C# List 详解二

    目录 5.Clear()     6.Contains(T)     7.ConvertAll(Converter)    ,toutput 8.CopyTo(Int32, T[], Int32, Int32)     9.CopyTo(T[])     10.CopyTo(T[], Int32)     C# List 文档(一) 1.Add(T),2.AddRange(IEnumerable),3.AsReadOnly(),4.BinarySearch(T), C# List 文档(二) 5.Clear(),6.Contains(T),7.ConvertAll(Converter),8.CopyT

    2024年02月16日
    浏览(42)
  • c# list集合克隆

    在C#中,List集合是一种泛型集合,可以存储任何类型的对象。克隆一个List集合可以通过以下几种方式实现: 使用List的构造函数 使用List的构造函数可以创建一个新的List对象,并将原始List中的元素复制到新List中。例如: 在上面的代码中, list2 是一个新的List对象,它使用

    2024年02月06日
    浏览(37)
  • C# 自定义List

    目录 一、需求 二、List 常用功能 三、自定义List 四、测试 1.Add 2.Clear 3.Contains 4.IndexOf 5.Insert 6.Remove 7.RemoveAt 结束 微软官方的 List 在命名空间 System.Collections.Generic 中,在平时的开发中 List 用的特别多,在用的时候我们基本不会考虑在 List 中内部是怎么写的,于是,我也写了一

    2023年04月24日
    浏览(35)
  • C# List 详解五

    目录 26.GetType()     27.IndexOf(T)     28.IndexOf(T, Int32)     29.IndexOf(T, Int32, Int32)     30.Insert(Int32, T)     31.InsertRange(Int32, IEnumerable)     32.LastIndexOf(T)     33.LastIndexOf(T, Int32)     34.LastIndexOf(T, Int32, Int32)     C# List 文档(一) 1.Add(T),2.AddRange(IEnumerable),3.AsReadOnly(),4.Bina

    2024年02月16日
    浏览(48)
  • C# list<T>去重

    List object is int object is decimal object is char object is bool object is string List List 集合里有三条记录,其中两条重复。 使用Distinct后,还有三条,说明distinct失败 原因是,引用类型即使属性一样,引用地址是不一样的。 只能用别的方式去避免。

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包