我有一个Dictionary
,对于大多数操作我只需要按键检索单个条目,但是对于一些操作,我需要处理与一系列键相关的条目。我这样做的方法是使用GetKeys
和FindAll
来匹配我感兴趣的范围,但是想知道是否有人可以提出更好的方法。
答案 0 :(得分:5)
实现为哈希表的Dictionary
不是特别适合于对密钥有效地执行范围选择操作。您必须访问所有键才能在指定范围内找到所有键。完成它的一个好方法是使用简单的LINQ表达式查询其键集合。
答案 1 :(得分:3)
SortedList
或SortedDictionary
会对项目进行排序,以便您可以尝试获取范围底部的密钥,然后将元素遍历到范围的顶部。
在SortedList
上使用二分搜索将为您提供与范围底部匹配的键的索引,或最接近的更高值。见How to perform a binary search on IList<T>?
答案 2 :(得分:1)
就像你说的那样,一个发现都会起作用。也许是类似的东西;
dictionary.FindAll(entry => multipleStrings.Contains(entry.Key));