1

我有一个未排序的Dictionary<int, Dictionary<int, string>>,当试图对其值的键进行排序时,它的抛出System.ArgumentException: At least one object must implement IComparable.如下是函数,

private static Dictionary<int, Dictionary<int, string>> SortDictionary(Dictionary<int, Dictionary<int, string>> unSortedDict)
{
      var sortedDict = (unSortedDict.OrderBy(entry => entry.Value.Keys)).ToDictionary(pair => pair.Key, pair => pair.Value);

      return sortedDict;
}

我附上了下面的数据屏幕截图,您可以在其中看到未排序的键,这样您就知道我想要实现的目标,我做错了什么,我需要您的指导,谢谢

在此处输入图像描述

4

1 回答 1

4

根据设计,字典本质上是未排序的。如果您对字典值进行排序,然后将其转换回字典,您将再次得到一个未排序的集合。

话虽这么说,发生错误是因为您尝试OrderBy使用 a调用KeyCollection,它不是可排序的类型。

您可能需要考虑其他一些集合,例如SortedDictionary<T,U>. 然而,这将需要编写一个自定义比较器来维护排序。

于 2012-10-04T17:01:37.960 回答