我有一个 DateTime 字典,我想按升序或降序对字典的值进行排序。我可以使用长过程来做到这一点,但我知道可能有一些内置方法可以对它们进行排序。请建议对这些字典值进行排序的最短方法。
我正在使用的字典是
Dictionary<string, DateTime> dict = new Dictionary<string, DateTime>();
我有一个 DateTime 字典,我想按升序或降序对字典的值进行排序。我可以使用长过程来做到这一点,但我知道可能有一些内置方法可以对它们进行排序。请建议对这些字典值进行排序的最短方法。
我正在使用的字典是
Dictionary<string, DateTime> dict = new Dictionary<string, DateTime>();
你不能在字典中这样做,因为字典是无序的(或者更确切地说,排序可以改变,并且是一个实现细节)。您可以使用 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排序。
按降序,可以使用以下语句进行排序
var ordered = dict.OrderByDescending(pair => pair.Value);