Edición de valores de diccionario en un bucle foreach

Estoy tratando de construir un gráfico circular de un diccionario. Antes de mostrar el gráfico circular, quiero ordenar los datos. Estoy quitando cualquier porción de tarta que sería menos del 5% de la tarta y poniéndolas en una "Otra" porción de tarta. Sin embargo estoy recibiendo unCollection was modified; enumeration operation may not execute excepción en tiempo de ejecución.

Entiendo por qué no puede agregar o eliminar elementos de un diccionario mientras realiza una iteración sobre ellos. Sin embargo, no entiendo por qué no puede simplemente cambiar un valor para una clave existente dentro del bucle foreach.

Cualquier sugerencia en relación a: arreglar mi código, sería apreciada.

Dictionary<string, int> colStates = new Dictionary<string,int>();
// ...
// Some code to populate colStates dictionary
// ...

int OtherCount = 0;

foreach(string key in colStates.Keys)
{

    double  Percent = colStates[key] / TotalCount;

    if (Percent < 0.05)
    {
        OtherCount += colStates[key];
        colStates[key] = 0;
    }
}

colStates.Add("Other", OtherCount);

Respuestas a la pregunta(12)

Su respuesta a la pregunta