私はC#とLINQの専門家ではありません。ToDictionaryを使用してソート済み辞書を作成する
私はDictionary
を持っています。私はハッシュテーブルを理解しています。すなわち、キーはソートされていません。
dataBase = new Dictionary<string, Record>()
Record
与えられたキー文字列のデータの数を保持するユーザ定義のクラスです。このコードは正しく動作
var sortedDict = (from entry in dataBase orderby entry.Key ascending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
:
私はこのDictionary
には、LINQで辞書をソート変換興味深い例を見つけました。結果の
sortedDict
はキーでソートされます。
質問:私はsortedDict
がまだハッシュテーブルであることを見出し、のタイプ:Iが得られた辞書は、一般として実装されているC++ STLのようmap
の一種であるべき予想
System.Collections.Generic.Dictionary<string, Record>
キーの順序を維持するための(バランスの取れた)バイナリツリー。ただし、結果の辞書は依然としてハッシュテーブルです。
sortedDict
はどのように注文を維持できますか?ハッシュテーブルはキーの順序を保持できません。一般的なハッシュテーブル以外のC#の実装はGeneric.Dictionary
ですか?
:
は、あなたがそれをよりアクセシブルにしたいならば、あなたはIEnumerableをへの拡張を書き込むことができ、new SortedDictionary<string, Record>(yourNormalDictionary);
を使用し、ソートされた辞書を取得します'Dictionary'を求めて取得しました。あなたがソートされたDiecionaryを維持したい場合は、私が知っている 'SortedDictionary'を使用してください。 – TheEvilPenguin
しかし、私は最後の瞬間にソートされた辞書が必要です。私の質問は、どのように 'Dictionary'が注文を維持できるかということです。これは私には奇妙です。LINQコードは、*ソートされた*辞書を実際に構築しますが、その型はまだ辞書です。 – minjang
linqは 'Dictionary'をソートするだけで、' SortedDictionary'を作成しません –