값 목록을 포함하는 사전을 만들고 채우려 고합니다. 즉중첩 목록 사전에 목록 추가
Dictionary <string, List<string>> DictionaryA = new Dictionary<string,List<string>>();
사전의 값은 Excel 스프레드 시트로 출력됩니다.
키 아래에서 사전에 목록을 입력하려고 할 때 문제가 발생합니다. 첫 번째 사전 할당은 괜찮습니다. 예를 들어 키 "Key1"아래에 10 개의 문자열 목록이 있습니다.
Dictionary <string, List<string>> DictionaryA = new Dictionary<string, List<string>>();
int i = 0;
while(page.MoveNext()) //For example, for each page in a book
{
while(words.MoveNext()) //For example, words in the page
{
if(!(ListA.Contains(ValueA)) //For example, we are looking to store instances of each word in each page of a book
{
ListA.Add(ValueA);
}
DictionaryA.Add(i, ListA);
i++;
}
sortedList = DictionaryA.Keys.ToList(); //Let's say we want to sort the Dictionary as well
sortedList.Sort()
foreach (var key in sortedList)
{
DictionaryASorted.Add(key, DictionaryA[key]);
}
ExcelOuput(DictionaryASorted); //Function to export and save an Excel File
}
그래서 page.Movenext를 통해 첫 번째 실행() 루프는 사전은 목록에서 제대로 가득, 괜찮습니다. 그러나 루프의 두 번째 실행에서 찾은 고유 한 "ValueA"가 목록 "ListA"에 추가됩니다. 이는 사전에 이미 저장된 "ListA"를 수정합니다. 최종 결과는 키와 다른 페이지 번호가 들어있는 사전과 각 키에 대해 동일한 거대한 단어 목록입니다.
각 페이지 루프의 시작 부분에 ListA.Clear()
을 사용하면 목록은 읽은 마지막 페이지의 단어가되고 다른 것은 없습니다.
수정중인 이전 목록을 변경하지 않고이 중첩 목록을 어떻게 사용할 수 있습니까? 이 일을 올바르게하려고 노력하고 있습니까? 아니면 이보다 더 훌륭하고 우아한 솔루션이 있습니까?
정확히 내가 필요한 것입니다. 왜 전에 보지 못했지?! 가! – Eomo
@Eomo Classic 문제. 기분 나빠하지 마. 변수를 값으로 전달하거나 다른 객체에 추가 할 때 참조에 의해 전달되는 것을 알기가 어려울 수 있습니다. – Vulcronos