【发布时间】:2016-02-20 15:24:27
【问题描述】:
在 C# 中是否有任何可用的有序字典集合提供了一种现成的方法来查找大于某个值的第一个键(如果所查找的值不存在)?
即if (!Dictionary.ContainsKey(some_key)) 然后根据字典的排序谓词返回下一个key > some_key?
如果有一种巧妙的方式与代表一起做这件事,我们同样会感激不尽!
【问题讨论】:
-
试试
SortedDictionary。SortedDictionary<string, string> openWith = new SortedDictionary<string, string>() -
我认为它没有实现。正如@Vadim 所说,.Net 中有 SortedDictionary,您可以尝试一下。使用 Linq,我们有
OrderBy()方法,它允许我们对数据进行排序,但只是排序。 -
您最好的选择可能是使用
SortedList<TKey, TValue>并对键进行二分搜索。SortedList有一个IndexOfKey方法,但它不允许您在搜索失败的情况下找到密钥的位置。不幸的是,IList<Key>也没有内置的二进制搜索方法,因此您必须手动执行此操作。 -
我的意思是可以从 SortedDictionary 键或值创建一个列表,并使用它们的顺序迭代槽。
标签: c# .net dictionary data-structures ordereddictionary