Contains,Exists,Any,Count 比较是否存在某个元素
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 比较是否存在某个元素的更多相关文章
- mysql 数据库 exists 和count
由于最近在使用exists是出现了一个小问题,但是在调试的时候费了不少时间,因为自己只是牢固造成,所以在在此记录,已提醒自己. mysql中exists 用法: 通过和主查询管理 以达到过滤的效果,如 ...
- exists的用法
今天突然看到之前自己写的一个代码 久久没想通为毛.. 看来笔记还是需要 exists可以代替子查询in 比in 更高效 默认是exists 查询中包含有数据则条件成立..否则没数据 select ...
- exists
select count(*) from Table_A where exists (select count(*) from Table_B.Column1 = Table_A.Column1) 该 ...
- 几条sql语句(exists)
通常exists后的子查询是需要和外面的表建立关联关系的,如 select count(*) from a where exists (select 'x' from b where a.id = b ...
- php count()函数用法 及其 一个坑
用法 count() 函数返回数组中元素的数目. count(array,mode); [mode] 0 - 默认.不计算多维数组中的所有元素. 1 - 递归地计算数组中元素的数目(计算多维数组中的所 ...
- LINQ Count/Sum/Min/Max/Avg
参考:http://www.cnblogs.com/peida/archive/2008/08/11/1263384.html Count/Sum/Min/Max/Avg用于统计数据,比如统计一些数据 ...
- 谈谈map中的count方法
map和set两种容器的底层结构都是红黑树,所以容器中不会出现相同的元素,因此count()的结果只能为0和1,可以以此来判断键值元素是否存在(当然也可以使用find()方法判断键值是否存在). 拿m ...
- [转]LINQ语句之Select/Distinct和Count/Sum/Min/Max/Avg
在讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to DataSets.LINQ ...
- Linq to SQL -- Select、Distinct和Count、Sum、Min、Max、Avg
Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...
随机推荐
- NOIP 2015 提高组 Day1
期望得分:100+100+100=300 实际得分:100+100+45=245 T3 相似的代码 复制过去 没有改全,痛失55分 http://www.cogs.pro/cogs/page/page ...
- linux命令df中df -h和df -i的区别
df 命令: linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [ ...
- Python面向对象学习 1 (什么是面向对象,面向对象的应用场景,待更新)
程序设计的三种基本结构: 面向对象,面向过程,函数式编程 1,什么是面向对象编程 面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就 ...
- mysql中列的增删改
增加列: ); ) after id; ) first; 修改列名: ); #change可改名字与字段类型 mysql> alter table a change uid uid int; Q ...
- python基础===基于cv2的播放器
import cv2 import threading import win32gui,win32con class Producer(threading.Thread): ""& ...
- windos8设置cpu数量和内存大小
转自:http://smilejay.com/2012/03/windows_cpu_memory_setting/ Windows 8(测试版)在作为Xen Guest中的benchmark测试.我 ...
- 64_p2
perl-Class-XSAccessor-1.19-10.fc26.x86_64.rpm 12-Feb-2017 15:12 48098 perl-Clipboard-0.13-16.fc26.no ...
- fastDFS 命令笔记【转】
端口开放 这是命令运行的前提 iptables -I INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT iptables -I I ...
- python爬虫多线程编程
#使用了线程库 import threading from queue import Queue from bs4 import BeautifulSoup import json import re ...
- Java Tuple使用实例(转)
转自链接:http://www.cnblogs.com/davidwang456/p/4514659.html 一.为什么使用元组tuple? 元组和列表list一样,都可能用于数据存储,包含多个数据 ...