原文地址:http://blog.youkuaiyun.com/caesarliu1121/article/details/24775249
现在网上谈到Linq中的判断集合非空基本都说要用Any比Count好. 但真实情况是这样的吗?
首先我们要从Any和Count的差别说起.Any() 使用IEnumerator.GetEnumerator() 和 MoveNext() 來判断是否集合为空,而Count()则是返回整个集合的元素个数. 就像网上大多数文章所说的, Count() > 0 遇上 yeild return必定会出现性能问题。因为当遇到使用 yield return 返回集合的方法時,如果使用了 Count() 的話,就相当于遍历一遍整个集合然后得到集合个数。<

博客探讨了C#中使用Linq的Any()和Count()来判断集合非空的性能差异。尽管网上普遍认为Any()更优,作者通过测试发现,Any()在某些情况下可能比Count()慢,因为它涉及到GetEnumerator和MoveNext操作。结论建议根据集合来源选择方法:不确定个数的IEnumerable<T>使用Any(),外部数据如LINQ to SQL使用Any(),而.NET内建集合使用Count()。
最低0.47元/天 解锁文章
1743

被折叠的 条评论
为什么被折叠?



