的考慮:效率System.Linq.Enumerable.Any()
Dim values = {"First", "Second", "Third", "Fourth", "Fifth"}
Dim searchValue = "fourth"
Dim isPresent = False
是不是更有效地做到這一點:
isPresent = values.Any(Function(x) String.Compare(x, searchValue, True) = 0)
或本:
For Each value In values
If (String.Compare(value, searchValue, True) = 0) Then
isPresent = True
Exit For
End If
Next
基本上,我的問題是:是否Any
方法短路 - 如For Each
循環所做的 - 當它遇到它的第一個元素時滿足謂詞,如果是這樣的話,是否比上面顯示的操作的O(n)更快?
請注意:我的問題不是關於在字符串集合中查找字符串。我知道有很多方法可以實現這一點。我的問題比這更一般 - 關於LINQ Any
方法與For Each
循環方法的效率。
此外,我回顧了What is the Efficiency and Performance of LINQ and Lambda Expression in .Net?和Find an item in List by LINQ?以及其他資源,他們不回答我的問題,我無法找到任何問題。
是的,它應該.. – 2014-12-03 15:46:53
請解釋反對票。 – 2014-12-03 15:47:23
[LINQ Any vs FirstOrDefault!= null]的可能重複(http://stackoverflow.com/questions/8339988/performance-of-linq-any-vs-firstordefault-null) – 2014-12-03 15:47:38