我如何使用listDictionary?

我可以填写我的listdictinary但是,如果运行错误在“foreach(字符串ky in ld.Keys)”中返回给我(无效操作exception未处理)

错误详细信息:创建指向样本集合列表的指针后,已更改。 C#

ListDictionary ld = new ListDictionary(); foreach (DataColumn dc in dTable.Columns) { MessageBox.Show(dTable.Rows[0][dc].ToString()); ld.Add(dc.ColumnName, dTable.Rows[0][dc].ToString()); } foreach (string ky in ld.Keys) if (int.TryParse(ld[ky].ToString(), out QuantityInt)) ld[ky] = "integer"; else if(double.TryParse(ld[ky].ToString(), out QuantityDouble)) ld[ky]="double"; else ld[ky]="nvarchar"; 

你的第二个foreach循环通过设置ld [ky] =“whatever”来改变ListDictionary; 您不能使用foreach循环执行此操作,因为它在内部使用枚举器。 使用枚举器时,更改枚举的集合是非法的。

相反,使用for循环。

更好的是,在dTable.Columns上的单个循环中完成整个操作,在添加每个项目时设置字典中的值。

 ListDictionary ld = new ListDictionary(); foreach (DataColumn dc in dTable.Columns) { MessageBox.Show(dTable.Rows[0][dc].ToString()); string value; if (int.TryParse(dTable.Rows[0][dc].ToString(), out QuantityInt)) value = "integer"; else if(double.TryParse(dTable.Rows[0][dc].ToString(), out QuantityDouble)) value="double"; else value="nvarchar"; ld.Add(dc.ColumnName, value); } 

您无法在foreach循环中修改集合。
相反,你需要使用for循环。