Bearbeiten von Wörterbuchwerten in einer foreach-Schleife

Ich versuche, ein Kreisdiagramm aus einem Wörterbuch zu erstellen. Bevor ich das Kreisdiagramm anzeige, möchte ich die Daten aufräumen. Ich entferne alle Kuchenstücke, die weniger als 5% des Kuchens ausmachen, und lege sie in ein "anderes" Kuchenstück. Ich bekomme jedoch eineCollection was modified; enumeration operation may not execute Ausnahme zur Laufzeit.

Ich verstehe, warum Sie keine Elemente zu einem Wörterbuch hinzufügen oder daraus entfernen können, während Sie darüber iterieren. Ich verstehe jedoch nicht, warum Sie einen Wert für einen vorhandenen Schlüssel in der foreach-Schleife nicht einfach ändern können.

Für Vorschläge bezüglich der Korrektur meines Codes wären wir Ihnen dankbar.

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

Antworten auf die Frage(12)

Ihre Antwort auf die Frage