Wer kennt das nicht? Man hat eine Liste oder ein Array aus Objekten oder Variablen und muss nun bestimmte Einträge in dieser Liste löschen. Die mir bisher bekannte Vorgehensweise es mit Schleifen (For Each) zu machen war immer problematisch, da man die durchzulaufende Liste nicht verändern darf. Heute bin ich auf das Thema Lambda-Ausdrücke gestoßen, die es einem wirklich einfach machen, diese Werte mit einer Code-Zeile zu entfernen, in sofern man klare Kriterien definieren kann.

Hier mein Beispiel:

1:Protected Sub ListDemo()
2: 'Liste erstellen
3: Dim li As New List(Of String)
4: li.Add("Text1")
5: li.Add("Text2")
6: li.Add("Text3")
7: li.Add("Text4")
8: li.Add("Text1")
9: li.Add("Text4")
10:
11: 'Alle List-Items die den Wert "Text1" haben entfernen
12: li.RemoveAll(Function(prod) prod.Equals("Text1"))
13: End Sub


Hier noch meine Erklärung der Sytax:

li - generische Liste
RemoveAll - orginäre Methode der Klasse List(Of T)
Funtion - Definition der rekursiven, anonymen Funktion
prod - Übergabeparameter - In diesem Fall der aktuelle Listenwert
prod.Equals("Text1") - Boolscher Ausdruck, der ausgewertet wird

Etwas ausführlicher ist das Ganze auf bloggingabout.net englisch beschrieben.