For Each in mehreren Listen

Hallo zusammen,

ich würde gern etwas Schreibarbeit sparen und möchte daher wissen, ob es eine Möglichkeit gibt, die gleiche For Each-Schleife über mehrere Listen laufen zu lassen. Dabei sind die Listen von verschiedenen Typen, lassen sich aber auf den gleichen Basistyp zurückführen.

Also anstatt:

For Each p In a
X=p.Y
Next

For Each p In b
X=p.Y
Next

Irgendwas, mit dem man das zusammenfassen kann

For Each p In a Und b
X=p.Y
Next

Gibt es da eine Möglichkeit?
Ich habe schon versucht, die verschiedenen Listen in ein Array zu packen, aber dann hatte ich Probleme beim Zugriff, weil das Array Objekte enthiel.

Also es wäre toll, wenn jemand eine Idee hat. Im Grunde geht es hier nur um die Einsparung von Codezeilen, aber generell kann ich mir eben einfach nicht vorstellen, dass so etwas nicht geht. Und darum will ich wissen, wie :smile:

Vielen Dank und liebe Grüße
minnies

Hi!

So allgemein, wie Du das schreibst, gibt es hierfür nichts.
Damit das for each funktioniert, muss die „Liste“ (also Dein a und b) nur IEnumerable implementieren und IEnumerable hat keine weiteren Methoden zum Zusammenhängen von Collections.
Bei den Klassen, die eine AddRange-Methode haben (z.B. List(Of T)), liefert diese void zurück, so dass Du um die Deklaration einer Gesamtliste und anschließendes Umkopieren nicht herumkommst.

Aus Performancegründen also vermutlich sinnvoller, jede einzelne Liste separat abzuarbeiten.

Gruß,
Martin

Danke Martin für deinen Hinweis.

Ich habe jetzt eine Funktion geschrieben, die die verschiedenen Listen in eine Basistypliste schreibt und filtere dann in der Gesamtliste.

Ich glaube aber auch, dass dieses Vorgehen nur sinnvoll ist, wenn man die Gesamtliste noch an einer anderen Stelle gebrauchen kann. Ansonsten ist es wohl etwas umständlich.

Gruß Minnies