在c#中使用字典时出错

bri*_*342 2 c# asp.net dictionary exception

我正在尝试搜索字典以查看它是否具有某个值,如果是,则更改它.这是我的代码:

foreach (var d in dictionary)
{
    if (d.Value == "red")
    {
         d.Value = "blue";
    }
}
Run Code Online (Sandbox Code Playgroud)

在visual studio中,当我逐步调试代码时,我可以看到它改变了值,然后当它到达foreach循环再次重复它会抛出异常

"集合已被修改;枚举操作可能无法执行"

我该如何解决?

Ree*_*sey 5

你不能在foreach中间改变它 - 你需要提出一些其他机制,例如:

// Get the KeyValuePair items to change in a separate collection (list)
var pairsToChange = dictionary.Where(d => d.Value == "red").ToList();
foreach(var kvp in pairsToChange)
    dictionary[kvp.Key] = "blue";
Run Code Online (Sandbox Code Playgroud)