Editando os valores do dicionário em um loop foreach

Eu estou tentando construir um gráfico de pizza de um dicionário. Antes de exibir o gráfico de pizza, quero arrumar os dados. Estou removendo todas as fatias de pizza que seriam menos de 5% da pizza e colocando-as em uma fatia de pizza "Outros". No entanto eu estou recebendo umCollection was modified; enumeration operation may not execute exceção em tempo de execução.

Eu entendo porque você não pode adicionar ou remover itens de um dicionário enquanto iterar sobre eles. No entanto, não entendo por que você não pode simplesmente alterar um valor para uma chave existente no loop foreach.

Qualquer sugestão re: consertar meu código, seria 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);

questionAnswers(12)

yourAnswerToTheQuestion