Was ist der einfachste Weg, um durch ein ListT unerwünschte Objekte zu entfernen?

8

In meiner Anwendung ist _collection eine Liste, aus der alle Benutzerobjekte entfernt werden müssen, die nicht mit den Kriterien übereinstimmen.

Der folgende Code ruft jedoch in der zweiten Iteration einen Fehler ungültiger Vorgang ab, da die _collection selbst geändert wurde:

%Vor%

Ich könnte eine andere List-Sammlung erstellen und sie hin und her kopieren, aber dann habe ich das Problem von nicht geklonten Referenztypen, usw.

Gibt es eine Möglichkeit, das obige eleganter zu machen, als die _collection in eine andere Listenvariable zu kopieren?

    
Edward Tanguay 13.07.2009, 15:55
quelle

3 Antworten

54
%Vor%

Wenn Sie immer noch auf 2.0:

%Vor%

Übrigens, wenn Sie die ursprüngliche Liste nicht berühren möchten, können Sie eine weitere Liste genehmigter Benutzer mit:

erhalten %Vor%     
Mehrdad Afshari 13.07.2009, 15:56
quelle
4

Sie können immer am obersten Index beginnen und nach unten in Richtung 0 laufen:

%Vor%

Mehrdads Antwort sieht jedoch verdammt elegant aus.

    
Dan Tao 13.07.2009 15:59
quelle
0

Wenn die Möglichkeit besteht, dass eine Sammlung in einer Schleife geändert wird, wählen Sie stattdessen eine for -Schleife. Die Lösung von Mehrdad ist schön und definitiv einen Versuch wert!

Hier ist Code, den ich im Umgang mit modifizierbaren Sammlungen hilfreich finde:

%Vor%     
Mike J 18.07.2009 21:09
quelle

Tags und Links