Edycja wartości słownika w pętli foreach

Próbuję zbudować wykres kołowy ze słownika. Zanim wyświetlę wykres kołowy, chcę uporządkować dane. Usuwam wszystkie plasterki ciasta, które byłyby mniejsze niż 5% ciasta i umieszczały je w wycinku kołowym „Inne”. Jednak dostajęCollection was modified; enumeration operation may not execute wyjątek w czasie wykonywania.

Rozumiem, dlaczego nie można dodawać ani usuwać elementów ze słownika podczas iteracji nad nimi. Nie rozumiem jednak, dlaczego nie można po prostu zmienić wartości istniejącego klucza w pętli foreach.

Wszelkie sugestie dotyczące naprawy mojego kodu będą mile widziane.

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