Entfernen von Elementen aus einem generischen Listt

8

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

    
frosty 08.06.2010, 08:37
quelle

6 Antworten

27

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:

%Vor%     
Konrad Rudolph 08.06.2010, 08:40
quelle
4

Sie können eine Sammlung beim Iterieren nicht ändern. Verwenden Sie einfach eine normale for -Schleife anstelle einer foreach -Schleife.

    
Hans Olsson 08.06.2010 08:40
quelle
3

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%     
Pranay Rana 08.06.2010 08:42
quelle
2

Sie können ein Element nicht aus einer Sammlung entfernen, die Sie gerade durchlaufen. Sie können das orderItem im Auge behalten und es dann entfernen, nachdem Sie die Schleife beendet haben

    
BenW 08.06.2010 08:41
quelle
1

Wie Sie feststellen, können Sie einen Artikel nicht aus einer Sammlung entfernen, während Sie ihn überfliegen. Ich bin mir sicher, dass jemand in der Lage sein wird, eine bessere LINQ-Lösung zu bieten, aber das Folgende sollte Sie zunächst auf den Plan rufen:

%Vor%     
openshac 08.06.2010 08:43
quelle
0

"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.

    
Manish Basantani 08.06.2010 09:28
quelle

Tags und Links