【问题标题】:Efficient way to get a range of Keys from Dictionary从字典中获取一系列键的有效方法
【发布时间】:2010-11-18 07:35:49
【问题描述】:

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

【问题讨论】:

    标签: c# generics dictionary


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      就像你说的,一个 find all 就可以了。也许是这样的;

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-08
          • 2021-08-01
          • 2022-08-14
          • 2016-07-25
          • 1970-01-01
          • 2020-05-19
          相关资源
          最近更新 更多