我可以填写我的listdictinary但是,如果运行错误在“foreach(字符串ky in ld.Keys)”中返回给我(无效操作异常未处理)
错误详细信息:创建指向样本集合列表的指针后,已更改。 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";
答案 0 :(得分:2)
你的第二个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);
}
答案 1 :(得分:0)
您不能在foreach循环中修改集合 相反,你需要使用for循环。