Próbuję zbudować wykres kołowy ze słownika. Przed wyświetleniem wykresu kołowego chcę uporządkować dane. Usuwam wszystkie plasterki ciasta, które byłyby mniejsze niż 5% ciasta i umieszczam je w „innym” kawałku ciasta. 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.
Będziemy wdzięczni za wszelkie sugestie dotyczące: naprawy mojego kodu.
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);