字典的遍历问题
//我有一个数据结构如下
Dictionary<int,Dictionary<string,decimal>> tmpGetItemTime=new Dictionary<int,Dictionary<string,decimal>>()
//如果加入了正确的数据后我进行以下的遍历,最后提示出错
//出错提示是:集合已修改;可能无法执行枚举操作
foreach (int p in tmpGetItemTime.Keys)
{
for (int i = 0; i < podetailDatas.GetLength(0); i++)
{
if (p == (int)podetailDatas[i, 2])
{
foreach (string ks in tmpGetItemTime[p].Keys)
{
tmpGetItemTime[p][ks] *= histCountInt[i];
}
}
break;
}
}
//请指教!谢谢!
------解决方案--------------------问题呢?+
------解决方案--------------------
没有认真看你的代码,像是O(n^3)的操作。
但异常可以这样避免(作一个keys的拷贝):
C# code
foreach (int p in new List<int>(tmpGetItemTime.Keys)) //<--
{
for (int i = 0; i < podetailDatas.GetLength(0); i++)
{
if (p == (int)podetailDatas[i, 2])
{
foreach (string ks in new List<string>(tmpGetItemTime[p].Keys)) //<--
{
tmpGetItemTime[p][ks] *= histCountInt[i];
}
}
break;
}
}
------解决方案--------------------
哇 嵌套。。。
5555 我们这破书里面怎么没提过
嵌套使用