答えて
ここには何も修正はありません。 Any()
は列挙を反復しますが、最初の要素の後で停止します(その後、trueを返します)。
パフォーマンス:
複数の列挙は、主に2つの場合に問題とされている一般的には、複数回の繰り返しを避けたい場合 ことができ、それが遅いため。
Any()
少なくとも1つの要素があることを確認して、あなたに必要なチェックであるので、これはここには当てはまりません。また、メモリ内のシーケンスだけで、リモート/外部リソースにアクセスすることもありません。2回以上反復できない列挙型: などをネットワークから受信しています - ここでも適用されません。唯一あなたが次の操作を行うことができたら、繰り返し処理する必要のある非LINQのバージョンとして
bool foundAny= false;
bool isEqual = true;
if(f == null)
throw new ArgumentException();
foreach(var check in f)
{
foundAny = true;
isEqual = isEqual && check(p,p2);
}
if(!foundAny)
throw new ArgumentException();
return isEqual;
する。しかし、述べたように、あなたのケースでは、それは違いはありませんし、Iあなたにもっと読みやすいバージョンで行くだろう。
これはデータベースクエリであれば、通常は完全に2回実行されます。 – usr
@usr:合意しました。最初のケースに追加しました。リモート/外部リソースかメモリ内シーケンスかどうかに違いがあります – BrokenGlass
の列挙は、結果を特定する別の方法がない場合に発生する可能性があります。場合によっては、たとえばIEnumerable<T>
インスタンスが実際にIQueryable<T>
で、データベースクエリまたはWebサービス呼び出しを実行させるような問題があります。さて、それが単なるメモリ内のコレクションであれば、コレクションを列挙しても目立った副作用がないので、実際には問題にはなりません。とにかくAny
は、配列がICollection<T>
を実装する場合はCount
プロパティを使用するため、列挙は発生しません。
- 1. IEnumerableの複数の列挙
- 2. IEnumerableの複数の列挙が可能です - 複数の列挙が必要な場合はどうすればよいですか?
- 3. IEnumerableの複数の列挙 - StackOverflowException
- 4. "IsNullOrEmpty"チェックでも "IEnumerableの複数の列挙が可能"という警告が表示される
- 5. Object.createの列挙可能な引数は何ですか?
- 6. JqGridで複数列のグループ化が可能ですか?
- 7. 複数のセルフタイプが可能ですか?
- 8. null可能な列挙型へのキャスト
- 9. asp.net mvc2モデルバインディングの列挙可能なプロパティ
- 10. LINQ Enumerableで列挙可能 - なぜですか?
- 11. 複数の列挙値のスイッチ/ケース
- 12. EF 4.3複数の列挙問題
- 13. 複数のバンドル間のDoctrine2マッピングが可能ですか?
- 14. 同じRabbitMQサーバーで複数の環境が可能ですか?
- 15. TextViewで複数の配置が可能ですか?
- 16. 複数のnull可能な列でグループ化すると、C#Linq?
- 17. ジェネリック、列挙型、カスタム属性 - 可能でしょうか?
- 18. Doctrine 1と複数の主キーが可能ですか?
- 19. 複数のトップレベルTreeNodeが可能ですか?
- 20. Android Facebookシングルサインオン - 複数のキーハッシュが可能ですか?
- 21. ハイチャート:複数の凡例が可能ですか?
- 22. 列挙型のToStringの値を保証することは可能ですか?
- 23. 複数の可能なRedirectToAction
- 24. は、コンパイル時に数の階乗を計算することが可能ですが、列挙型
- 25. ASP.Net AJAXの複数ページロード機能は可能ですか?
- 26. Android複数のクリック可能な文字列をテキストビューで表示
- 27. if文で変数を返す - 複数の試行が可能ですか?
- 28. リストの列挙可能を束縛する
- 29. ES6クラスのゲッターを列挙可能に設定する
- 30. ISO3166諸国の列挙型 - 受け入れ可能な方法ですか?
最終的なスクリーンショットとテキストを除いて、すべてが本物の質問から気をそらすだけです。 – usr
これはhttp://stackoverflow.com/q/7244178/219583と非常によく似ています。 Any()は1つの列挙としてカウントし、Aggregate()は2番目の列挙としてカウントします。 –
コードをスクリーンショットとして投稿しないでください。ソースを質問に貼り付けてください。 – Joe