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;
}
最悪の場合(noneまたは最後に一致)で、それはすべての要素を訪問すると、次のように大まかにが実装です。最高の場合(最初のマッチング)、それは訪問するだけです
後者 - ReSharperでコードを見て、体験版をダウンロードした場合に確認できます。
Anyが効率的かどうかについては、たとえば、代わりにCountプロパティを使用できます。しかし、間違いなく意図をうまく表現しています。
IEnumerable
それは本当ですが、私はまだ実現されていない配列で作業しています。実際、私は 'Enumerable'を補うためのメソッドの汎用ライブラリを書いています。だから私は 'IEnumerable
まだ実現されていないシーケンスで作業している場合は、それらが繰り返し可能かどうかを確認してください。 'Any'はシーケンスを実行するためにシーケンスの要素を読み込まなければならないので、反復不可能なシーケンスに適用するときは注意が必要です。そうしないと、最初の要素が失われます。私は実際にそれが助けになる場合にこれを見ていた:http://stackoverflow.com/questions/9194908/safely-checking-non-repeatable-ienumerables-forempty –
Anyは、述部との一致が成功するとすぐにtrueを返します。存在しない場合は、コレクション全体で反復されます。
- 1. このLINQの方が効率的ですか?
- 2. 任意のニューラルネットワーク出力を効率的に計算できますか?
- 3. データフレームを効率的に任意の長さのリストに変換する方法はありますか?
- 4. 効率的な方法が
- 5. mutexの方が効率的ですか?
- 6. Linq-to-Entities/Linq-to-SQLでは、1つのデータポーリング方法が効率的ですか?
- 7. 任意の所定の間隔でアレイ内の5つの最大値を見つける効率的方法
- 8. 任意の子フレームからトップウィンドウにコールバック関数を渡す最も効率的な方法は?
- 9. パンダ - 効率的な方法ですか?
- 10. 任意の効率的な方法は、雲の情報のスクリプトをデバッグするには?
- 11. もっとエレガントで効率的な方法ですか? (XML/Linq/Read&Write)
- 12. より効率的なLINQの式
- 13. Celeryはローカルシステムで効率的ですが、Pythonのマルチプロセッシングは効率的ですか?
- 14. 効率的な方法は
- 15. は、効率的な方法
- 16. 効率的な方法
- 17. 効率的な方法は
- 18. 効率的な方法
- 19. 効率的な方法
- 20. 効率的な方法(パイソン)
- 21. 効率的な方法
- 22. 効率的な方法
- 23. LINQの名前空間と任意の方法()
- 24. Javaで効率的にする方法
- 25. 任意の数のRDDに効率的に参加するにはどうすればいいですか?
- 26. より効率的なLINQクエリ
- 27. 非効率的なLINQ Foreachステートメントタイムアウト
- 28. エンティティフレームワークコード最も効率的なLinqクエリ
- 29. Linq to sql効率的なソリューション
- 30. エレガントかつ効率的な方法
私はそれが事実であったことを期待していました、ありがとう。私はもともと 'Count()> 0'を使用していて、非常に高価な操作であることに気付きました。私は 'Any'を再発見してどこにでも使っています:) – Jordan