В настоящее время я сталкиваюсь с проблемой, когда я хочу добавить разные значения к одному и тому же ключу через foreach l oop.
List<KeyValuePair<string, Dictionary<string, string>>> sysList = new List<KeyValuePair<string, Dictionary<string, string>>>();
Dictionary<string, string> newSystem = new Dictionary<string, string>();
string line1="";
string line2="";
string quit="";
foreach(Worksheet ws in workbook.Worksheets)
{
while(quit != q)
{
newSystem.Clear();
line1 = Console.ReadLine();
line2 = Console.ReadLine();
quit = Console.ReadLine();
}
newSystem.Add(line1, line2);
sysList.Add(new KeyValuePair<string, Dictionary<string, string>>(ws.Name,newSystem));
}
Для первой итерации (в течение времени) первого рабочего листа ws все хорошо. Если я решу сделать> 1 итераций на этом рабочем листе, будет добавлена новая запись, но значения словаря все те же, например:
syList[0]: "worksheetName","test1","test2"
syList[1]: "worksheetName","test1","test2"
syList[2]: "worksheetName","test1","test2"
Если есть несколько итераций foreach, имена остаются то же самое, но ключ и значения словаря, добавленные newSys, одинаковы [ПОСЛЕ второй итерации foreach]:
syList[0]: "worksheetName1","test1","test2"
syList[1]: "worksheetName1","test1","test2"
syList[2]: "worksheetName1","test1","test2"
syList[3]: "worksheetName2","test1","test2"
syList[4]: "worksheetName2","test1","test2"
Изначально я пытался использовать словари, но не мог правильно обрабатывать те же ключи и не нашел правильное решение за исключением использования List.
Я очень благодарен за любую предоставленную помощь. Если вам нужны дополнительные сведения, пожалуйста, сообщите мне.
Редактировать: желаемый результат (пример):
#########: ws.Name, line1, line2
syList[0]: "worksheetName1","ABC","1"
syList[1]: "worksheetName1","DEF","2"
syList[2]: "worksheetName1","ABC","5"
syList[3]: "worksheetName2","ABD","4"
syList[4]: "worksheetName2","ZZZ","1"