2011-01-11 6 views
0

辞書をループする必要があります。通常のforeach..ループから後方にループします。これを達成する最良の方法は何ですか?SortedDictionaryを逆方向に反復処理する最良の方法は何ですか?

更新

私にSortedDictionaryを返して外部のオブジェクトがあります。 "文字列"は一意であり、対応するオブジェクトmyObjectを参照する必要があります。私はリストをアルファベット順に "文字列"でソートしたいと思います...逆です。

この目的には他にどのようなオブジェクトをお勧めしますか?

+8

辞書は順序付けされていません。「後方に」はありません。実際に解決しようとしている問題をより詳しく説明できますか? – Juliet

+0

@Juliet:答えとして追加して投票します –

+0

私は編集を行いました。可能な限り最も効率的な方法でsortedDictionaryを逆にしたいと思います。 – LamonteCristo

答えて

6

よく、Dictionary<K,V>クラスは内部的にそのキーを格納するためにハッシュテーブルを使用しているため、暗黙の順序はありません。あなたがキーを追加した順番は保存されていないので、それを "逆"する意味のある方法はありません。

しかし、ListやSortedDictionaryなどの注文コレクションがある場合は、LINQ Reverseメソッドを使用してシーケンスを逆にすることができます。

更新

SortedDictionaryを持っていることについて、あなたの更新に応じて、私は上記にリンクされているEnumerable.Reverse方法を参照してください。辞書を(KeyValuePairのコレクションまたは文字列のコレクションとしてのKeysプロパティとして)逆順にすることができます。

SortedDictionary<string,object> dictionary = blah; 
var keyValuePairs = dictionary.Reverse(); 
var keys = dictionary.Keys.Reverse(); 
関連する問題