Question

J'ai un IList qui contient des éléments (parent en premier), ils doivent être ajoutés à un document de diagramme dans l'ordre inverse afin que le parent soit ajouté en dernier, puis dessiné en haut de sorte qu'il soit sélectionné en premier par l'utilisateur.

Quelle est la meilleure façon de le faire? Quelque chose de mieux / plus élégant que ce que je fais actuellement que je poste ci-dessous ..

Était-ce utile?

La solution

Si vous avez .NET 3.5, vous pouvez utiliser la fonction Reverse de LINQ?

foreach(var item in obEvtArgs.NewItems.Reverse())
{
   ...
}

(En supposant que vous parlez du IList générique)

Autres conseils

D'après les commentaires de réponse de Davy et La réponse originale de Gishu , vous pouvez convertir votre System.Collections.IList faiblement typé vers une collection générique à l'aide du . Méthode d'extension System.Linq.Enumerable.Cast :

var reversedCollection = obEvtArgs.NewItems
  .Cast<IMySpecificObject>( )
  .Reverse( );

Ceci supprime le bruit de la boucle inverse pour et de la conversion en tant que pour obtenir un objet fortement typé de la collection d'origine.

NewItems est ma liste ici ... C'est un peu maladroit cependant.

for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--)
            {
                GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos));
            }

Vous n'avez pas besoin de LINQ:

var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
  ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top