我目前遇到一个问题,我想在foreach循环中向同一Key添加不同的值。
List<keyvaluepair<string,Dictionary<string,string>>> sysList = new List<keyvaluepair<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,string>>(ws.Name,newSystem));
}
对于第一个工作表的第一次迭代(在一段时间内),一切都很好。如果我选择在此工作表中进行> 1次迭代,则会添加一个新条目,但Dictionary值都相同,例如:
syList[0]: "worksheetName","test1","test2"
syList[1]: "worksheetName","test2"
syList[2]: "worksheetName","test2"
如果有多个foreach迭代,则名称保持不变,但newSys添加的Dictionary Key和Values相同[在第二个foreach迭代之后]:
syList[0]: "worksheetName1","test2"
syList[1]: "worksheetName1","test2"
syList[2]: "worksheetName1","test2"
syList[3]: "worksheetName2","test2"
syList[4]: "worksheetName2","test2"
最初,我尝试使用字典,但除了使用List之外,无法正确处理相同的键,也找不到合适的解决方案。
我非常感谢您提供的任何帮助。 如果您需要其他详细信息,请告诉我。
编辑: 所需的结果(示例):
#########: ws.Name,line1,line2
syList[0]: "worksheetName1","ABC","1"
syList[1]: "worksheetName1","DEF","2"
syList[2]: "worksheetName1","5"
syList[3]: "worksheetName2","ABD","4"
syList[4]: "worksheetName2","ZZZ","1"