2011-08-14 13 views
9

I.E. Si quiero seleccionar de una matriz, ¿el objeto resultante IEnumerable<object> está necesariamente en orden?¿Las colecciones de Do C# siempre imponen el orden?

public class Student { public string FullName, ... } 
public class School { public string Name, public Student[] Students, ... } 

public void StudentListWork(School thisSchool) 
{ 
    IEnumerable<string> StudentNames = thisSchool.Students.Select(student => student.FullName); 

    // IS StudentNames GUARANTEED TO BE IN THE SAME ORDER AS thisSchool.Students? 
} 

¡Gracias!

+0

Que es Estudiantes? ¿Una lista? una lista ordenada? ¿una matriz? ¿un diccionario? "colecciones" es un término amplio, y tienen diferentes características. –

+0

@Mystere: según la segunda línea, es una matriz. –

+0

@Jon Skeet - Doh! se olvidó de ... –

Respuesta

15

Sí, en este caso:

  • Arrays devuelve los elementos en el orden natural
  • Enumerable.Select devuelve elementos en el orden de la secuencia original (después de la proyección, por supuesto)

Algunas colecciones hacen no conservan orden, sin embargo. En particular:

  • colecciones como HashSet<T> y Dictionary<TKey, TValue> hacen ninguna garantía sobre el orden en que se devuelven los valores
  • colecciones como SortedSet<T> y SortedDictionary<TKey, TValue> aplican pedido garantizado en base a los artículos colocados dentro de ellos
Cuestiones relacionadas