2012-03-27 13 views
6

可能性の重複を反復処理しながら、私は、反復処理し、いくつかの操作を行う際に
Modifying .NET Dictionary while Enumerating through it削除辞書に

私は辞書オブジェクトを持っています。条件に基づいて私は削除するか、私は現在繰り返しているキー値のペアを保持する必要があります。それを反復しながら辞書からキー値のペアを削除する最善の方法は何ですか?

おかげ

答えて

9
を私は削除する要素を追跡するために、別の辞書オブジェクトを使用しようとしましたが、その後、私のメイン辞書からかのthats場合はそれを行うためにも、最も効率的な方法を削除するためにそれを使用する方法をイムはわかりません

削除したいキーのリストを見つけて保存します。次に、完了したら、保存した各キーに対してmyDictionary.Remove(key)を呼び出して、このリストを繰り返します。

+5

これは2回の繰り返しを意味し、1つはファイルを削除し、もう1つはアイテムを削除するために、削除したくないアイテムを他の辞書にコピーしないのはなぜですか? –

+1

@乳酸塩 - 私は正直言ってそのことを考えていませんでした。同じ辞書で終わるべき魅力的な理由がなければ、ほとんどの場合、より効率的になると期待しています。 – Rawling

+1

"削除したくないアイテムを他の辞書にコピーしないのはなぜですか?" 削除が予想されるアイテムの数がごくわずかであるか、または削除がめったにない場合、これは非常に機能しません。したがって、推奨事項はデータアクセスパターンに依存します – Imi

4

別の辞書を使用して、キー値をマークして、保存する必要がある挿入キーの値を削除してみてください。これを繰り返します。これはold_map = new_mapです。

関連する問題