Ich habe die folgende Methode, ich möchte Artikel aus meiner Sammlung entfernen, die der Produkt-ID entsprechen. Scheint ziemlich geradlinig, aber ich bekomme eine Ausnahme. Grundsätzlich ist meine Sammlung nicht mehr synchron. Also, was ist der beste Weg, um ein Objekt aus einer Sammlung zu entfernen.
%Vor%Ausnahmedetails: System.InvalidOperationException: Sammlung wurde geändert; Enumerationsoperation kann nicht ausgeführt werden
Das Ändern einer Sammlung in einer Schleife funktioniert nicht. Um dies zu umgehen, verfügt List
über einige Methoden, die "Batch" -Modifikationen einer Sammlung erlauben. In deinem Fall benutze:
Sie können eine Sammlung beim Iterieren nicht ändern. Verwenden Sie einfach eine normale for
-Schleife anstelle einer foreach
-Schleife.
Wenn Sie auf diese Weise eine Schleife erstellen, können Sie keine Objekte entfernen, da sie in der Sammlung die Spur der gespeicherten Elemente behalten.
Einfacher Weg, dies zu tun:
%Vor%oder
%Vor%"foreach" bietet eine "nur vorwärts schreibgeschützte" Iteration einer Sammlung.
Als Workaround können Sie den Verweis auf eine andere Sammlung kopieren und dann die kopierte Sammlung iterieren und die Elemente aus der ursprünglichen entfernen.