2013-04-25 7 views
0

그래서 이미 사용할 수있는 PDF 목록의 PDF를 결합하는 프로그램을 작성하려고합니다. 나는이 시점까지 대부분을 마쳤지 만, 특히 한 단계에 문제가 있습니다. 나는 C#에서 이것을 쓰고 있는데, 분명하지 않다.PdfOutlines로 사전 채우기

나는 범주 이름을 포함하는 문자열 배열을 가지고 있으며 각 범주 이름에 대해 나중에 프로그램에서 반복 할 수있는 null로 초기화되는 PdfOutline 형식의 변수를 만들려고합니다.

나는 이것에 대해 조사해 보았고 사전이 그것을 할 수있는 방법 인 것 같았지만 어떻게해야하는지 잘 모르겠습니다. 첫째, 사전을 올바른 방법으로 만들고 두 번째로 구현에 대한 도움이 필요합니다.

시간 내 주셔서 감사합니다.

답변

0

다음과 같은 것이 작동합니다 (죄송이-확인 구문되지 않음) :이 방법은 그것을 할 경우

// This requires the array of Categories to have no duplicates. 
public Dictionary<string, PdfOutline> BuildUpMyCollectionOfOutlines(string[] categories) 
{ 
    return categories.ToDictionary(cat => new KeyValuePair<string, PdfOutline>(cat, null)); 
} 

, 그럼 나중에 (같은 결과를 소비 할 수 할 수있는 기능을 가지고 있지만, List<KeyValuePair<string, PdfOutline>> 1에 따라 같은

public PdfOutline GetOutlineByCategory(Dictionary<string, PdfOutline> outlines, string category) 
{ 
    // This will be problematic if the category isn't actually in the dictionary. 
    return outlines[category]; 
} 

당신이 뭔가 다른 대 Dictionary<string, PdfOutline>을 사용할지 여부) 당신이하고 있습니다 얼마나 많은 이들의이은) 그것을 소비하는 방법을 보여 그냥 내 방식 바보입니다 2) 어떻게 액세스 할 수 있습니다. 예를 들어, 10,000 개가 있고 범주 이름별로 무작위로 반복해서 찾아야하는 경우 사전은 빠른 검색 (데이터베이스의 테이블에서 색인으로 생각)을 위해 해시하기 때문에 올바른 접근 방식입니다. 그러나 10,000 명이 있지만 그 중 2 명만 찾거나 그 중 하나를 필요로한다면 10 명 만 있으면 빠른 검색 기능을 구축하는 데 필요한 오버 헤드가 낭비됩니다. 따라서 Dictionary vs other는 "데이터베이스 테이블에 있다면 색인을 생성 하시겠습니까?"라는 질문에 가장 잘 답변됩니다.

관련 문제