Pregunta

Tengo una IList que contiene elementos (padre primero), deben agregarse a un documento de diagrama en orden inverso para que el padre se agregue al final, dibujado en la parte superior para que sea lo primero que seleccione el usuario.

¿Cuál es la mejor manera de hacerlo?Algo mejor/más elegante de lo que estoy haciendo actualmente que publico a continuación.

¿Fue útil?

Solución

Si tiene .NET 3.5, ¿podría usar LINQ's Reverse?

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

(Suponiendo que estás hablando de la IList genérica)

Otros consejos

Basado en los comentarios a la respuesta de davy, y La respuesta original de Gishu, podrías transmitir tu tipo débil System.Collections.IList a una colección genérica usando el System.Linq.Enumerable.Cast método de extensión:

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

Esto elimina el ruido tanto de la marcha atrás for bucle, y el as cast para obtener un objeto fuertemente tipado de la colección original.

NewItems es mi lista aquí...Aunque esto es un poco complicado.

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

No necesitas LINQ:

var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
  ...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top