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

辞書は、設計上、本質的にソートされていません。ディクショナリ値をソートしてからディクショナリに変換し直すと、ソートされていないコレクションが再び作成されます。

そうは言っても、ソート可能なタイプではないを使用して呼び出しようとしているため、エラーが発生していますOrderByKeyCollection

など、他のコレクションを検討することをお勧めしますSortedDictionary<T,U>。ただし、これには、並べ替えを維持するためのカスタム比較プログラムを作成する必要があります。

于 2012-10-04T17:01:37.960 に答える