11

私は C# と LINQ の専門家ではありません。

私はDictionaryハッシュテーブルを理解しています。つまり、キーはソートされていません。

dataBase = new Dictionary<string, Record>()

Record特定のキー文字列の多数のデータを保持するユーザー定義のクラスです。

これをLINQで並べ替えDictionaryられた辞書に変換する興味深い例を見つけました。

var sortedDict = (from entry in dataBase orderby entry.Key ascending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);

このコードは正しく動作します。結果sortedDictはキーでソートされます。

質問: それsortedDictはまだハッシュ テーブルであり、次のタイプであることがわかりました。

System.Collections.Generic.Dictionary<string, Record>

map結果の辞書は、キーの順序を維持するために (バランスのとれた) バイナリ ツリーとして一般に実装される C++ STLのようなものになるはずです。ただし、結果のディクショナリは依然としてハッシュ テーブルです。

sortedDict順序を維持するにはどうすればよいですか?ハッシュ テーブルは、キーの順序を保持できません。C# の実装はGeneric.Dictionary典型的なハッシュ テーブル以外ですか?

4

3 に答える 3