Hat .NET ein IEnumerable für mehrere Sammlungen?

8

Ich brauche eine einfache Möglichkeit, mehrere Sammlungen zu durchlaufen, ohne sie wirklich zusammenzuführen, und ich konnte in .NET nichts finden, was so aussieht. Es fühlt sich an, als ob dies eine etwas gewöhnliche Situation sein sollte. Ich will das Rad nicht neu erfinden. Ist etwas eingebaut, das so etwas macht:

%Vor%     
Bryce Wagner 19.05.2010, 00:10
quelle

2 Antworten

15

Versuchen Sie die in 3.5 hinzugefügte SelectMany-Erweiterungsmethode.

%Vor%

Der Code SelectMany(x => x) bewirkt, dass eine Sammlung von Sammlungen in einer einzigen Sammlung abgeflacht wird. Dies wird auf eine faule Art und Weise durchgeführt und ermöglicht eine einfache Verarbeitung, wie oben gezeigt.

Wenn nur C # 2.0 verfügbar ist, können Sie einen Iterator verwenden, um die gleichen Ergebnisse zu erzielen.

%Vor%     
JaredPar 19.05.2010, 00:11
quelle
10

Verwenden Sie einfach die Erweiterungsmethode Enumerable.Concat() , um zwei IEnumerables zu verketten. Mach dir keine Sorgen, es kopiert sie nicht wirklich in ein einziges Array (wie du aus dem Namen entnehmen kannst), es erlaubt dir einfach, sie alle aufzuzählen, als wären sie ein IEnumerable.

Wenn Sie mehr als zwei haben, dann wäre Enumerable.SelectMany() besser.

    
EMP 19.05.2010 00:14
quelle

Tags und Links