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

4
我有这个字典
Dictionary<Guid, DateTime> myDic = new Dictionary<Guid, DateTime>();

最佳方法是如何按日期时间DESC排序?使用LINQ吗?

这在代码中应该如何实现呢?

谢谢!


可能是 https://dev59.com/93VD5IYBdhLWcg3wXaid 的重复问题。 - MilkyWayJoe
排序什么?GuidDateTime?还是KeyValuePair<,> - Enigmativity
请使用有序字典。 - userGS
2个回答

9

想要对一个 Dictionary 进行排序必须依赖于当前实现的细节,但你可以使用 LINQ 的排序功能按照任何特定的顺序处理它的条目:

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

作为一种好奇心,您可以将有序的键值对传递给Dictionary构造函数,而生成的字典会按照传递到构造函数的枚举中提供的顺序进行枚举。但是,依赖此功能非常危险;在您的代码中不应该这样做。

6
你所需要的目标无法通过现有的数据结构来实现。 字典的目的是通过键(key)提供快速访问。已经存在一种 SortedDictionary,可以对其自身的键进行排序,但是没有字典可以对其值进行排序,因为这是没有意义的。
假设你只需要按降序排列在 myDic 中包含的 DateTime,则可以执行以下操作:
var dateTimesDescending = myDic.Values.OrderByDescending(d => d);

这样可以让你按降序列出值,但不会对字典进行排序


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接