2010-05-27 7 views
2

문자열 속성을 사용하여 객체를 빨리 찾을 수있는 작업이 있습니다. 대상 :문자열 속성별로 빨리 찾기 객체

class DicDomain 
    { 
    public virtual string Id{ get; set; } 
    public virtual string Name { get; set; } 
    } 

내 객체를 저장하기 위해 내가 사용 목록 [T] 사전 T는 지금 DicDomain입니다. 저는 5 백 10 개 목록을 가지고 있는데, 각 목록에는 약 500 ~ 20000 개의 목록이 들어 있습니다. 작업은 이름으로 개체를 찾습니다. 지금 다음 코드를 사용 : 나는 몇 가지 질문을 가지고

List<T> entities = dictionary.FindAll(s => s.Name.Equals(word, StringComparison.OrdinalIgnoreCase)); 

을 :

내 검색 속도가 최적입니다. 나는 지금 생각한다.

  1. 데이터 구조. 그것은이 일에 좋은 목록입니다. 해시 테이블은 어떻게 분류 되나요?
  2. 메소드 찾기. 나는 문자열 인턴을 사용해야합니까?

나는 이러한 작업을 많이하지 않았습니다. 증가 할 수있는 성능에 대해 좋은 조언을 해줄 수 있습니까? 감사

답변

5

자주이 작업을 수행하는 경우, 당신은 (Name이 고유 또는 Dictionary<string, DicDomain> 경우) Dictionary<string, List<DicDomain>> 구축 할 수 있습니다 (DicDomain 객체의 무리에 이름에서) 역 매핑을 구축하고 최신 그 사전을 유지 .

var list = dictionary[name]; 
+0

자주 100000 번 매일 :

작업은 그 후 간단한 해시 테이블 조회 할 것이다. 충고에 감사하다!!! 나는 그런 좋은 방법을 상상할 수 없다. Dictionary와 HashTable은 어떨까요? –

+0

@Andrew : 짧은 대답 :'사전'. 긴 답변 : http://stackoverflow.com/questions/1089132/net-hashtable-vs-dictionary-can-the-dictionary-be-as-fast/1089142#1089142 –

+0

StringComparison.OrdinalIgnoreCase 및 이것에 대해서는 어떻게됩니까? CaseInsensetive 검색을 구현하려면 어떻게해야합니까? –