LINQ中的Any
方法是否迭代整个集合或在第一次成功迭代时返回true?LINQ的任何方法是否有效?
回答
Any
方法将只迭代必要的最小元素数。只要它找到一个匹配的元素,它将立即返回
这是大致实现如下
public static bool Any<T>(this IEnumerable<T> enumerable, Func<T, bool> predicate) {
foreach (var cur in enumerable) {
if (predicate(cur)) {
return true;
}
}
return false;
}
在最坏的情况下(没有或最后一个匹配)将访问所有元素。在最好的情况下(第一次匹配),它将只访问1
后者 - 你可以用ReSharper看代码来验证,如果你下载试用版。
至于Any是否有效率 - 这不是例如, Count属性可用作替代。但它确实可以很好地表达意图。
如果IEnumerable
这是真的,但我正在处理尚未实现的序列。实际上,我正在编写一个通用库来补充'Enumerable'。所以我不知道给定的序列是什么,只是它实现了'IEnumerable
如果您正在处理尚未实现的序列,请务必确保它们是否可重复。由于'Any'必须读取序列的一个元素才能完成它的工作,所以在将其应用于不可重复序列时必须小心,否则将失去第一个元素。我一直在看这一段时间,实际上它有助于:http://stackoverflow.com/questions/9194908/safely-checking-non-repeatable-ienumerables-for-emptiness – 2012-03-14 18:08:11
只要它找到与谓词的成功匹配,任何就立即返回true,但如果不存在,它将遍历整个集合。
- 1. 是否有任何有效的解决方案/方法?
- 2. 有没有任何有效的方法来优化以下Linq
- 3. driver.lockScreen方法是否有效?
- 4. 是否有任何方法可以有效地检查提供的jsonObject中是否缺少任何键?
- 5. 如何测试方法是否有效?
- 6. 是否有任何方法像“popoverPresentationControllerWillDismissPopover”
- 7. 是否有任何有效的方法来动态更改boost中的compress_matrix?
- 8. 是否有任何有效的方法来替换NSString中的字符
- 9. 检查AzureTable是否有任何数据的最简单有效的方法?
- 10. 是否有更好或更有效的方式来筛选linq
- 11. 在ActionScript中,是否有方法检查输入参数是否是任何类型的有效Vector?
- 12. 是否有任何jQuery.ajaxSuccess等效于AngularJS
- 13. LINQ的最有效的方法
- 14. 查找映射是否包含列表中的任何键的有效方法
- 15. 此交易方法是否有效?
- 16. 有效的方式是使用LINQ
- 17. 在SQL Server中是否有任何等效的Oracle INSERT ALL方法
- 18. 是否有任何方法来检查使用ObRegisterCallbacks注册的回调是否仍然有效?
- 19. make方法makeEvent()是否有任何优点是静态的?
- 20. 是否有任何方法返回除法后的小数? (Python3)
- 21. 是否有任何errno是read()的有效POSIX返回值?
- 22. 是否有与LINQ的所有方法相反的东西?
- 23. 是否有Queryable.SelectMany()方法的C#LINQ语法?
- 24. LINQ的 - 关于“任何”的方法
- 25. 是否有类似的Junit设置方法在任何的Mockito
- 26. 的Java:是否有任何其他有效的方式来做到这一点
- 27. 该语法是否有效?
- 28. 是否有任何有效的用于Java的2D ArrayList类?
- 29. 检查是否有任何与Tkinter预定的方法AFTER
- 30. 是否有任何的Android AJAX样异步回调方法?
我希望是这样,谢谢。我最初使用'Count()> 0',并意识到这是一个非常昂贵的操作。我重新发现了'Any'并且一直在其他地方使用它。:) – Jordan 2012-03-14 16:28:10