我不是 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
不是典型的哈希表吗?