Редактирование значений словаря в цикле foreach

Я пытаюсь построить круговую диаграмму из словаря. Прежде чем отобразить круговую диаграмму, я хочу привести в порядок данные. Я удаляю все кусочки пирога, которые будут составлять менее 5% от пирога, и помещаю их в «другой» кусок пирога. Однако я получаюCollection was modified; enumeration operation may not execute исключение во время выполнения.

Я понимаю, почему вы не можете добавлять или удалять элементы из словаря, просматривая их. Однако я не понимаю, почему вы не можете просто изменить значение для существующего ключа в цикле foreach.

Любые предложения по исправлению моего кода, будут оценены.

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);

Ответы на вопрос(12)

Ваш ответ на вопрос