C# - 根据修改日期和创建日期对字典进行排序

mlg*_*mlg 2 c# linq dictionary

我在字典中有一些记录,我需要根据创建日期(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月4日下午4:43:54
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);
Run Code Online (Sandbox Code Playgroud)

根据排序,我需要按照这样的降序对数据进行排序.
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 PM
4/30/2013 4:46:36 PM 4/30/2013 4:43:54 PM 4/30/2013 4:46:16 PM

但上述代码无效.有任何想法吗?

Dan*_*rth 8

根据文档,未定义字典中项目的顺序:

返回项的顺序未定义.

如果您需要允许通过密钥进行O(1)访问的结构,请使用Dictionary<TKey, TValue>.
如果你需要一个有序的结构,请使用类似的东西List<KeyValuePair<TKey, TValue>>.

  • @MidhunlalG:因为在排序之后,您将数据存储回字典中,有效地丢失了您刚执行的所有排序. (5认同)