Wie iterieren ich eine .Net IList Sammlung in der umgekehrten Reihenfolge?
-
01-07-2019 - |
Frage
Ich habe einen IList, die Elemente (Eltern zuerst) enthält, müssen sie in ein Diagramm Dokument in der umgekehrten Reihenfolge hinzugefügt werden, so dass die Eltern zuletzt hinzugefügt wird, oben gezogen, so dass es das erste, was von zu wählenden der Benutzer.
Was ist der beste Weg, es zu tun? Etwas besser / eleganter als das, was ich derzeit tue was ich unten posten ..
Lösung
Wenn Sie .NET 3.5 haben Sie LINQ umge verwenden könnte?
foreach(var item in obEvtArgs.NewItems.Reverse())
{
...
}
(Vorausgesetzt, Sie sprechen über den generischen IList)
Andere Tipps
Basierend auf den Kommentaren zu Davy Antwort und ursprüngliche Antwort des Gishu, könnten Sie Ihre schwach typisierte System.Collections.IList
auf eine generische Sammlung mit der System.Linq.Enumerable.Cast
Erweiterungsmethode Cast:
var reversedCollection = obEvtArgs.NewItems
.Cast<IMySpecificObject>( )
.Reverse( );
Dies entfernt das Rauschen sowohl die Rückwärts for
Schleife und der as
Guss ein stark typisierte Objekt aus der ursprünglichen Sammlung zu erhalten.
NewItems ist meine Liste hier ... Das ist ein bisschen obwohl klobig.
for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--)
{
GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos));
}
Sie haben nicht LINQ benötigen:
var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
...
}