Warum bekomme ich “Sammlung wurde geändert; Aufzählungsoperation wird möglicherweise nicht ausgeführt “, wenn die Auflistung nicht geändert wird? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Collection wurde geändert; Aufzählungsoperation wird möglicherweise nicht in ArrayList [duplicate] @ ausgefüh 9 answers

Ich habe zwei Auflistungen von Zeichenfolgen: CollectionA ist eine StringCollection-Eigenschaft eines im System gespeicherten Objekts, während CollectionB eine zur Laufzeit generierte Liste ist. CollectionA muss aktualisiert werden, damit es mit CollectionB übereinstimmt, wenn es Unterschiede gibt. Also habe ich mir eine einfache LINQ-Methode ausgedacht, um die Entfernung durchzuführen.

var strDifferences = CollectionA.Where(foo => !CollectionB.Contains(foo));
foreach (var strVar in strDifferences) { CollectionA.Remove(strVar); }

Aber ich bekomme ein"Collection was modified; enumeration operation may not execute" error bei strDifferences ... obwohl es sich um eine separate Aufzählung der zu ändernden Sammlung handelt! Ich habe ursprünglich diesesausdrücklic, um diesen Fehler zu umgehen, da meine erste Implementierung ihn erzeugen würde (da ich across @ aufgezählt habCollectionA und nur entfernen, wenn!CollectionB.Contains(str)). Kann jemand einen Einblick geben, warum diese Aufzählung fehlschlägt?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage