2009-08-10 59 views
3

得到一定範圍的密鑰我有一個Dictionary,對於大多數操作我只需要檢索的鑰匙的一個條目,但對於一些操作,我需要與一系列相關的條目工作鍵。發生在我身上的做法是使用GetKeysFindAll,它們與我感興趣的範圍相匹配,但想知道是否有人可以提出更好的方法。有效的方法來從字典

回答

4

A Dictionary它被實現爲散列表並不特別適合於高效地對密鑰執行範圍選擇操作。您必須訪問所有密鑰才能在指定範圍內查找所有密鑰。完成它的一個好方法是用一個簡單的LINQ表達式來查詢它的鍵集合。

1

就像你說的,找到一切都會奏效。也許是這樣的;

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

一個SortedListSortedDictionary會對項目進行排序,所以你可以嘗試讓你的範圍的底部的鍵,然後遍歷元素的區間頂部。

SortedList使用二進制搜索會給你匹配範圍,或者最近的更大價值底部的關鍵指標。見How to perform a binary search on IList<T>?

相關問題