【问题标题】:How to sort dictionary by DateTime value如何按日期时间值对字典进行排序
【发布时间】:2012-04-24 01:47:56
【问题描述】:

我有这个字典

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

DateTime 对其 DESC 进行排序的最佳方法是什么?是LINQ吗?

如何在代码中完成?

谢谢!

【问题讨论】:

标签: c# .net linq dictionary


【解决方案1】:

您无法在不依赖当前实现细节的情况下对Dictionary 进行排序,但您可以使用 LINQ 的排序功能以任何特定顺序处理其条目:

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

纯粹出于好奇,您可以将有序键值对传递给Dictionary 的构造函数,生成的字典将按照在枚举中提供给构造函数的项目的顺序进行枚举.然而,依赖这个功能是非常危险的;你不应该在你的代码中这样做。

【讨论】:

    【解决方案2】:

    你有错误的数据结构来实现你想要的。字典的目的是通过键提供快速访问。存在对自己的键进行排序的 SortedDictionary,但没有对其值进行排序的字典,因为这没有意义。

    假设您只需要 myDic 中包含的 DateTimes 降序排序,您可以这样做:

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

    这将允许您按降序枚举值,但不会对字典进行排序

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2010-10-11
      相关资源
      最近更新 更多