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