private static void Main(string[] args)
{
int count = ;
Console.WriteLine("判断是否存在某个元素 :");
Console.WriteLine("\t值类型比较 :");
Contains_Exists_Any_Test(count);
Console.WriteLine();
Console.WriteLine("\t引用类型比较 :");
Contains_Exists_Any_Test_Complex(count); Console.ReadKey();
} /// <summary>
/// 值类型比较
/// </summary>
/// <param name="num"></param>
public static void Contains_Exists_Any_Test(int num)
{
List<int> list = new List<int>(); int N = num;
for (int i = ; i < N; i++)
{
list.Add(i);
}
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
Console.WriteLine(list.Contains(N));
sw.Stop();
Console.WriteLine("Contains:" + sw.Elapsed.ToString()); sw.Reset();
sw.Start();
Console.WriteLine(list.Exists(i => i == N));
sw.Stop();
Console.WriteLine("Exists:" + sw.Elapsed.ToString()); sw.Reset();
sw.Start();
Console.WriteLine(list.Any(i => i == N));
sw.Stop();
Console.WriteLine("Any:" + sw.Elapsed.ToString()); sw.Reset();
sw.Start();
Console.WriteLine(list.Count(i => i == N) > );
sw.Stop();
Console.WriteLine("Count:" + sw.Elapsed.ToString());
} /// <summary>
/// 引用类型比较
/// </summary>
/// <param name="num"></param>
public static void Contains_Exists_Any_Test_Complex(int num)
{
List<Person> list = new List<Person>();
Person person = new Person { Id = num };
int N = num;
for (int i = ; i < N; i++)
{
list.Add(new Person { Id = i });
}
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
Console.WriteLine(list.Contains(person));
sw.Stop();
Console.WriteLine("Contains:" + sw.Elapsed.ToString()); sw.Reset();
sw.Start();
Console.WriteLine(list.Exists(i => i.Id == person.Id));
sw.Stop();
Console.WriteLine("Exists:" + sw.Elapsed.ToString()); sw.Reset();
sw.Start();
Console.WriteLine(list.Any(i => i.Id == person.Id));
sw.Stop();
Console.WriteLine("Any:" + sw.Elapsed.ToString()); sw.Reset();
sw.Start();
Console.WriteLine(list.Count(i => i.Id == person.Id) > );
sw.Stop();
Console.WriteLine("Count:" + sw.Elapsed.ToString());
}
    public class Person : IEquatable<Person>
{
public int Id { get; set; }
public string Name { get; set; }
     public int Age { get; set; } public override bool Equals(object obj)
{
//if (ReferenceEquals(null, obj))
//{
// return false;
//} //if (ReferenceEquals(this, obj))
//{
// return true;
//} //if (obj.GetType() != GetType())
//{
// return false;
//} return Equals((Person)obj);
} public bool Equals(Person other)
{
//if (ReferenceEquals(null, other))
//{
// return false;
//} //if (ReferenceEquals(this, other))
//{
// return true;
//} return Id == other.Id;
} public override int GetHashCode()
{
return Id;
}
}

结论:

值类型 : Contais > Exists > Any (Count)

引用类型 : Exists > Contains > Any (Count)

将对象需要比较的属性增加为3个:

list.Exists(i => i.Id == person.Id && i.Age == person.Age && i.Name == person.Name)
        public bool Equals(Person other)
{
//if (ReferenceEquals(null, other))
//{
// return false;
//} //if (ReferenceEquals(this, other))
//{
// return true;
//} return Id == other.Id && Age == other.Age && Name == other.Name;
}

结果:

结论跟上述一样.

Contains,Exists,Any,Count 比较是否存在某个元素的更多相关文章

  1. mysql 数据库 exists 和count

    由于最近在使用exists是出现了一个小问题,但是在调试的时候费了不少时间,因为自己只是牢固造成,所以在在此记录,已提醒自己. mysql中exists 用法: 通过和主查询管理 以达到过滤的效果,如 ...

  2. exists的用法

    今天突然看到之前自己写的一个代码 久久没想通为毛.. 看来笔记还是需要 exists可以代替子查询in  比in 更高效   默认是exists 查询中包含有数据则条件成立..否则没数据 select ...

  3. exists

    select count(*) from Table_A where exists (select count(*) from Table_B.Column1 = Table_A.Column1) 该 ...

  4. 几条sql语句(exists)

    通常exists后的子查询是需要和外面的表建立关联关系的,如 select count(*) from a where exists (select 'x' from b where a.id = b ...

  5. php count()函数用法 及其 一个坑

    用法 count() 函数返回数组中元素的数目. count(array,mode); [mode] 0 - 默认.不计算多维数组中的所有元素. 1 - 递归地计算数组中元素的数目(计算多维数组中的所 ...

  6. LINQ Count/Sum/Min/Max/Avg

    参考:http://www.cnblogs.com/peida/archive/2008/08/11/1263384.html Count/Sum/Min/Max/Avg用于统计数据,比如统计一些数据 ...

  7. 谈谈map中的count方法

    map和set两种容器的底层结构都是红黑树,所以容器中不会出现相同的元素,因此count()的结果只能为0和1,可以以此来判断键值元素是否存在(当然也可以使用find()方法判断键值是否存在). 拿m ...

  8. [转]LINQ语句之Select/Distinct和Count/Sum/Min/Max/Avg

    在讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to DataSets.LINQ ...

  9. Linq to SQL -- Select、Distinct和Count、Sum、Min、Max、Avg

    Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...

随机推荐

  1. 树的性质和dfs的性质 Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) E

    http://codeforces.com/contest/782/problem/E 题目大意: 有n个节点,m条边,k个人,k个人中每个人都可以从任意起点开始走(2*n)/k步,且这个步数是向上取 ...

  2. PHP扩展开发--02.包裹第三方的扩展

    背景 也许最常见的PHP扩展是那些包裹第三方C库的扩展.这些扩展包括MySQL或Oracle的数据库服务库,libxml2的 XML技术库,ImageMagick 或GD的图形操纵库. 在本节中,我们 ...

  3. # 2018高考&自主招生 - 游记

    准备了一整个学期的高考和自主招生终于结束了....从育英出来, 以一个失败者的身份来写游记, 权当为明年的决战提供经验与总结. Day -1, June 5th 下午同学收拾考场, 自己在那里看书.. ...

  4. 机器学习-kNN-寻找最好的超参数

    一 .超参数和模型参数 超参数:在算法运行前需要决定的参数 模型参数:算法运行过程中学习的参数 - kNN算法没有模型参数- kNN算法中的k是典型的超参数 寻找好的超参数 领域知识 经验数值 实验搜 ...

  5. Struts结果跳转方式(四种result配置)

    1.转发(默认转发)

  6. 可能是是最全的Springboot基础视频分享,告别无视频可学

    一头扎进SpringBoot视频教程 SpringBoot入门 2017年-张志君老师-SpringBoot(新增) 欢迎关注我的微信公众号:"Java面试通关手册" 回复关键字& ...

  7. python设计模式之内置装饰器使用(四)

    前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰 ...

  8. Ubuntu 17.10 用 apt 搭建 lamp 环境(精简版)

    这篇文章主要用来快速部署以 php 5.6 为主的 lamp 环境,要看详细安装包括虚拟主机配置的请参考这篇:http://www.cnblogs.com/mingc/p/7864030.html 一 ...

  9. android 系统的休眠与唤醒+linux 系统休眠

    Android休眠与唤醒驱动流程分析 标准Linux休眠过程: powermanagement notifiers are executed with PM_SUSPEND_PREPARE tasks ...

  10. 去除\ufeff的解决方法,python语言

    语言:python 编程工具:pycharm 硬件环境:win10 64位 读取文件过程中发现一个问题:已有记事本文件(非空),转码 UTF-8,复制到pycharm中,在开始位置打印结果会出现  \ ...