如何按日期时间值对字典进行排序

本文关键字:字典 排序 何按 日期 时间 | 更新日期: 2023-09-27 18:32:12

我有这个字典

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

日期时间DESC 进行排序的最佳方法是什么?是 LINQ 吗?

如何在代码中完成?

谢谢!

如何按日期时间值对字典进行排序

如果不依赖当前实现的详细信息,则无法对Dictionary进行排序,但可以使用 LINQ 的排序功能以任何特定顺序处理其条目:

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

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

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

假设您所需要的只是 myDic 排序降序中包含的日期时间,您可以执行以下操作:

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

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