读书人

字典的遍历有关问题

发布时间: 2012-01-28 22:06:13 作者: rapoo

字典的遍历问题
//我有一个数据结构如下
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 我们这破书里面怎么没提过

嵌套使用

读书人网 >C#

热点推荐