3

私はこの辞書を持っています

Dictionary<Guid, DateTime> myDic = new Dictionary<Guid, DateTime>();

DESCDateTimeでソートする最良の方法は何ですか? LINQですか?

コードでどのように行うことができますか?

ありがとうございました!

4

2 に答える 2

6

Dictionary現在の実装の詳細に依存せずにa を並べ替えることはできませんが、LINQ の並べ替え機能を使用して、特定の順序でそのエントリを処理できます。

foreach (KeyValuePair<Guid,DateTime> pair in myDict.OrderByDescending(p => p.Value)) {
    // do some processing
}

純粋に好奇心として、順序付けられたキーと値のペアを のコンストラクターに渡すことができDictionaryます。結果の辞書は、コンストラクターへの列挙で項目が提供された順序で列挙されます。ただし、この機能に依存することは非常に危険です。コードでそれを行うべきではありません。

于 2012-04-24T01:54:21.400 に答える
5

目的を達成するには、データ構造が間違っています。ディクショナリの目的は、キーによる高速アクセスを提供することです。独自のキーをソートする SortedDictionary は存在しますが、値をソートするディクショナリはありません。意味がないからです。

必要なのは、降順でソートされた myDic に含まれる DateTimes だけであると仮定すると、次のことができます。

var dateTimesDescending = myDic.Values.OrderByDescending(d => d);

これにより、値を降順で列挙できますが、辞書はソートされません。

于 2012-04-24T01:57:17.053 に答える