使用多个级别</string,object>对Dictionary <string,object>进行排序

时间:2012-04-18 00:49:09

标签: c# linq dictionary lambda

此问题基于之前的帖子https://stackoverflow.com/a/8425200/737076

问题是你如何对词典创建时及其所有孩子和孩子的孩子进行排序。

我在想一个Comparer,但是想得到一些建议。

3 个答案:

答案 0 :(得分:4)

无法对字典进行排序。没有像列表或数组那样的索引顺序。但是,您可以使用字典的键并对键进行排序。

List<string> dictionaryKeys = new List<string>(dict.Keys);
dictionaryKeys.Sort();

然后遍历列表,按顺序检索值。

for (i = 0; i < dictionaryKeys.Count; i++)
{
    string key = dictionaryKeys[i];
    string value = dict[key];
}

这是一种模拟的字典。

对于具有多个级别的词典,您必须遍历所有级别并使用某种逻辑执行此操作。

但是,如果您的目标是排序字典,我确信有更好的方法来存储您的信息,可能是List<class_you_created_to_hold_all_the_information>:)

答案 1 :(得分:4)

您正在寻找一个SortedDictionary,它实现为二叉搜索树而不是哈希映射。除了以与上一个问题相同的方式实现它之外,您还需要提供一个Comparer来描述如何对您的集合进行排序。

答案 2 :(得分:-1)

使用 SortedDictionary课程。