3

我有这本词典

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

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

如何在代码中完成?

谢谢!

4

2 回答 2

6

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

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

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

于 2012-04-24T01:54:21.400 回答
5

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

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

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

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

于 2012-04-24T01:57:17.053 回答