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..

È stato utile?

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) {
  ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top