我有词典
Dictionary<Guid, DateTime> myDic = new Dictionary<Guid, DateTime>();
日期时间 对 DESC 进行排序的最佳方法是什么?是LINQ吗?
如何在代码中完成?
谢谢!
答案 0 :(得分:6)
如果不依赖当前实现的详细信息,则无法对Dictionary
进行排序,但您可以使用LINQ的排序功能以任何特定顺序处理其条目:
foreach (KeyValuePair<Guid,DateTime> pair in myDict.OrderByDescending(p => p.Value)) {
// do some processing
}
纯粹作为好奇心,你可以将有序键值对传递给Dictionary
的构造函数,结果字典将按照枚举中提供的项的顺序进行枚举构造函数。但是,依靠这种功能是非常危险的;你不应该在你的代码中这样做。
答案 1 :(得分:5)
您的数据结构错误,无法实现您的目标。字典的目的是通过密钥提供快速访问。存在SortedDictionary对其自己的键进行排序,但是没有字典对其值进行排序,因为这没有意义。
假设您需要的是myDic中包含的DateTimes降序,您可以这样做:
var dateTimesDescending = myDic.Values.OrderByDescending(d => d);
这将允许您按降序枚举值,但不会对字典进行排序。