Come faccio a scorrere un .Net IList raccolta in ordine inverso?
-
01-07-2019 - |
Domanda
Ho un IList che contiene elementi ( genitore prima ), devono essere aggiunti a un Diagramma Documento in ordine inverso, in modo che il genitore è aggiunto per ultimo, disegnato sulla parte superiore in modo che sia la prima cosa per essere selezionato dall'utente.
Qual è il modo migliore per farlo?Qualcosa di meglio/più elegante di quello che sto facendo attualmente che I post qui sotto..
Soluzione
Se si dispone di .NET 3.5 si potrebbe utilizzare LINQ Reverse?
foreach(var item in obEvtArgs.NewItems.Reverse())
{
...
}
(Supponendo che si sta parlando di generico IList)
Altri suggerimenti
Sulla base dei commenti di Davy risposta, e Gishu originale risposta, si potrebbe gettare il vostro debolmente tipizzato System.Collections.IList
per un generico insieme utilizzando la System.Linq.Enumerable.Cast
metodo di estensione:
var reversedCollection = obEvtArgs.NewItems
.Cast<IMySpecificObject>( )
.Reverse( );
Questo rimuove il rumore sia l'inverso for
loop, e il as
cast per ottenere un tipizzata in oggetto da collezione originale.
NewItems è la mia Lista qui...Questo è un po ' scomodo, però.
for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--)
{
GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos));
}
Non hai bisogno di LINQ:
var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
...
}