如何按DateTime值对字典进行排序

时间:2012-04-24 01:47:56

标签: c# .net linq dictionary

我有词典

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

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

如何在代码中完成?

谢谢!

2 个答案:

答案 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);

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

相关问题