在集合上使用Linq,以下代码行之间有什么区别?
if(!coll.Any(i => i.Value))
Run Code Online (Sandbox Code Playgroud)
和
if(!coll.Exists(i => i.Value))
Run Code Online (Sandbox Code Playgroud)
更新1
当我反汇编.Exists它看起来没有代码.
更新2
任何人都知道为什么这个没有代码?
我一直在寻找之间的性能基准测试Contains,Exists以及Any方法可用List<T>.我只想出于好奇而发现这一点,因为我总是在这些中感到困惑.关于SO的许多问题描述了这些方法的定义,例如:
所以我决定自己做.我将其添加为答案.对结果有任何更多见解是最受欢迎的.我还对数组进行了基准测试以查看结果
给定内存中的对象列表,我运行了以下两个表达式:
myList.where(x => x.Name == "bla").Any()
Run Code Online (Sandbox Code Playgroud)
VS
myList.Any(x => x.Name == "bla")
Run Code Online (Sandbox Code Playgroud)
后者总是最快的,我相信这是由于Where枚举所有项目.但是当没有匹配时也会发生这种情况.
我不确定为什么.是否存在这种观察到的性能差异的情况,例如是否在查询Nhib?
干杯.