2009-08-10 4 views
3

나는 대부분의 작업에 대해 키로 단일 항목을 검색해야하지만이 있습니다. 그러나 몇 가지 작업에 대해서는 범위와 관련된 항목으로 작업해야합니다 열쇠. 이 작업을 수행하는 방법은 내가 관심있는 범위와 일치하는 GetKeysFindAll을 사용하는 것이지만 누군가가 더 나은 방법을 제안 할 수 있는지 궁금해하고 있습니다.사전에서 키 범위를 효율적으로 가져 오는 방법

답변

4

해시 테이블로 구현되는 Dictionary은 키에 대한 범위 선택 작업을 효율적으로 수행하는 데 특히 적합하지 않습니다. 지정된 범위 내에서 모든 키를 찾으려면 모든 키를 방문해야합니다. 이를 수행하는 좋은 방법은 간단한 LINQ 표현식을 사용하여 키 모음을 쿼리하는 것입니다.

1

당신이 말했듯이, 모든 것이 작동 할 것입니다. 아마 뭔가;

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

SortedList 또는 SortedDictionary는 다음 범위의 상단에 요소를 통과하여 범위의 하단에있는 키를 얻기 위해 시도 할 수 있도록 항목을 정렬 할 것이다.

SortedList에서 이진 검색을 사용하면 범위의 맨 아래 또는 가장 가까운 높은 값과 일치하는 키의 색인을 얻을 수 있습니다. How to perform a binary search on IList<T>?

을 참조하십시오.
관련 문제