Durch Collection iterieren und Elemente löschen
-
Hi,
irgendwie hab ich jetzt schon relativ viel im Web gesucht, aber nirgends eine Lösung für mein Problem gefunden. Und zwar will ich ganz einfach durch eine Collection (genauer eine List) mittels eines Enumerators iterieren, und unter bestimmten Bedingungen auch bestimmte Elemente löschen. Das geht so ja ohne weiteres nicht mit einem normalen Enumerator. Bei Java ist ja genau dasselbe Problem, allerdings gibts da auch eine Lösung dafür, da wirds doch für C# auch was analoges geben oder? Irgendwie verzweifel ich da langsam dran, da ich nirgeds was zu gefunden hab...
-
Die Lösung sollte recht einfach sein: Durch die Collection iterieren, dabei die zu löschenden Elemente merken. Dann *nach* der Foreach-Schleife alle gemerkten Elemente löschen. Alternativ kannst Du auch FindAll verwenden, um die zu löschenden Elemente zu bestimmen.
-
Hmm das ist aber nicht besonders schön...aber scheinbar gibts da tatsächlich nix besseres...
Danke jedenfalls
-
-
Geht auch nicht wirklich so.
-
nep schrieb:
Geht auch nicht wirklich so.
Was meinst Du damit? Was geht daran nicht?
-
Wenn ich das während des Iterierens aufruf, dann fliegt er mir raus, da dass eine "invalide Operation" darstellt (da ich während des Iterierens etwas aus der Liste lösche)
-
nep schrieb:
Wenn ich das während des Iterierens aufruf, dann fliegt er mir raus, da dass eine "invalide Operation" darstellt (da ich während des Iterierens etwas aus der Liste lösche)
Du sollst RemoveAll vermutlich auch nicht während des Iterierens aufrufen, sondern das Iterieren RemoveAll überlassen :). RemoveAll ruft für jedes Element den übergebenen Delegaten auf und löscht das Element, wenn dieser true zurückgibt.
-
Ah ok verstanden. Das ist das was auch Konrad meinte