2

辞書にいくつかのレコードがあり、作成日 (CDate) と変更日 (MDate) に基づいてデータを並べ替える必要があります。レコードの作成中、私の CDate は現在の日時になりますが、MDate は 1/1/0001 12:00:00 AM になります。

これは、並べ替えに使用されるサンプル データとコードです。

CDate MDate
4/30/2013 4:43:41 PM 4/30/2013 4:46:47 PM
4/30/2013 4:43:28 PM 4/30/2013 4:46:36 PM
4/30/ 2013 4:43:54 PM 4/30/2013 4:46:16 PM
4/30/2013 5:03:13 PM 1/1/0001 12:00:00 AM

コード:

FileSchedulerEntities = FileSchedulerEntities
                       .OrderByDescending(pair => pair.Value.MDate)
                       .ThenByDescending(pair => pair.Value.CDate)
                       .ToDictionary(pair => pair.Key, pair => pair.Value);

ソートごとに、このように降順でソートされたデータが必要です。
CDate MDate
4/30/2013 5:03:13 PM 1/1/0001 12:00:00 AM
4/30/2013 4:43:41 PM 4/30/2013 4:46:47 PM
4/30/ 2013 午後 4:43:28 2013 年 4 月 30 日 午後 4:46:36 2013 年 4 月 30 日 午後 4:43:54 2013 年 4 月 30 日 午後
4:46:16

しかし、前述のコードは機能しません。何か案は?

4

2 に答える 2

8

ディクショナリ内の項目の順序は、ドキュメントに従って定義されていません:

アイテムが返される順序は定義されていません。

キーを介した O(1) アクセスを許可する構造が必要な場合は、 を使用しますDictionary<TKey, TValue>
順序付けられた構造が必要な場合は、 のようなものを使用しますList<KeyValuePair<TKey, TValue>>

于 2013-05-02T07:25:33.280 に答える