0

我有一个 DateTime 字典,我想按升序或降序对字典的值进行排序。我可以使用长过程来做到这一点,但我知道可能有一些内置方法可以对它们进行排序。请建议对这些字典值进行排序的最短方法。

我正在使用的字典是

    Dictionary<string, DateTime> dict = new Dictionary<string, DateTime>();
4

2 回答 2

3

你不能在字典中这样做,因为字典是无序的(或者更确切地说,排序可以改变,并且是一个实现细节)。您可以使用 LINQ 很容易地获得对的有序序列:

var ordered = dict.OrderBy(pair => pair.Value); // To order by DateTime value

或者

var ordered = dict.OrderBy(pair => pair.Key); // To order by String key

然后,您可以根据需要进行迭代ordered。用于OrderByDescending强加降序而不是升序。

或者,如果您想要一个自动维护排序的集合,您可以使用SortedList<,>orSortedDictionary<,>如果(且仅当)您想要按键排序。我不相信 .NET 中有任何类似字典的集合,它按value排序。

于 2013-06-27T10:52:44.070 回答
0

按降序,可以使用以下语句进行排序

var ordered = dict.OrderByDescending(pair => pair.Value); 
于 2013-06-27T11:06:21.303 回答