从字典中获取一系列键的有效方法

时间:2009-08-10 14:21:50

标签: c# generics dictionary

我有一个Dictionary,对于大多数操作我只需要按键检索单个条目,但是对于一些操作,我需要处理与一系列键相关的条目。我这样做的方法是使用GetKeysFindAll来匹配我感兴趣的范围,但是想知道是否有人可以提出更好的方法。

3 个答案:

答案 0 :(得分:5)

实现为哈希表的Dictionary不是特别适合于对密钥有效地执行范围选择操作。您必须访问所有键才能在指定范围内找到所有键。完成它的一个好方法是使用简单的LINQ表达式查询其键集合。

答案 1 :(得分:3)

SortedListSortedDictionary会对项目进行排序,以便您可以尝试获取范围底部的密钥,然后将元素遍历到范围的顶部。

SortedList上使用二分搜索将为您提供与范围底部匹配的键的索引,或最接近的更高值。见How to perform a binary search on IList<T>?

答案 2 :(得分:1)

就像你说的那样,一个发现都会起作用。也许是类似的东西;

dictionary.FindAll(entry => multipleStrings.Contains(entry.Key));