¿Cómo recorrer una colección que admite IEnumerable?¿Cómo recorrer una colección que admite IEnumerable?
Respuesta
un habitual para cada uno hará:
foreach (var item in collection)
{
// do your stuff
}
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{
}
Junto con los métodos que han sido sugeridas de la utilización de un bucle foreach
, pensé que me gustaría también mencionar que cualquier objeto que implemente IEnumerable
también proporciona una IEnumerator
interfaz a través del método GetEnumerator
. Aunque este método generalmente no es necesario, se puede utilizar para iterar manualmente en colecciones, y es particularmente útil al escribir sus propios métodos de extensión para colecciones.
IEnumerable<T> mySequence;
using (var sequenceEnum = mySequence.GetEnumerator())
{
while (sequenceEnum.MoveNext())
{
// Do something with sequenceEnum.Current.
}
}
Un buen ejemplo es cuando se quiere recorrer más de dos secuencias al mismo tiempo, lo cual no es posible con un bucle foreach
.
No olvides desechar el enumerador. –
@Eric: Sí, lo agregaré porque es fácil pasar por alto. – Noldorin
+1, la iteración manual puede ser útil a veces. –
o incluso un método de chapado a la antigua muy clásico
for(int i = 0; i < collection.Count(); i++)
{
string str1 = collection.ElementAt(i);
// do your stuff
}
Tal vez le gustaría este método también :-)
¿Por qué tiene tantos votos ascendentes? Esto enumerará los enumerables 2n veces en lugar de una vez. –
@RomanReiner porque esto funciona, algunas personas no se preocupan por el rendimiento :) – Khateeb321
@RomanReiner este es un buen ejemplo, tengo que asignar cada elemento de una Colección a otra colección, creo que no puedo hacer esto usando foreach – AminM
- 1. Colección personalizada Implementación IEnumerable
- 2. ¿LINQ admite de forma nativa dividir una colección en dos?
- 3. ¿Cómo vinculo una colección (IEnumerable) de un tipo personalizado?
- 4. ¿Cómo recorrer una matriz JSON?
- 5. ¿Por qué una expresión de inicializador de colección requiere que se implemente IEnumerable?
- 6. recorrer una lista casilla
- 7. LINQ, creando colección única de una colección
- 8. Cómo convertir un IEnumerable <IEnumerable <T>> a un IEnumerable <T>
- 9. vb.net ¿cómo recorrer una lista de directorios?
- 10. Estoy tratando de aprender cómo enlazar una colección LINQ IEnumerable a un repetidor
- 11. Cómo burlarse de una interfaz que se extiende IEnumerable
- 12. ¿Puedo recorrer un Collection.Request.Form?
- 13. ¿Cómo puedo inicializar una lista de C# en la misma línea que la declaro? (Colección Ejemplo de cadena IEnumerable)
- 14. ¿Cómo puedo recorrer todas las rutas?
- 15. ¿Cómo puedo agregar un artículo a una colección de IEnumerable <T>?
- 16. serialización Json.net de colección personalizada implementando IEnumerable <T>
- 17. Agregar una clave foránea que admite nulos.
- 18. ORM que admite Mono?
- 19. Ordenando una colección compuesta
- 20. Creando una restricción NUnit que significa "{colección} no contiene {elemento}"
- 21. Java: Alternativa a iterator.hasNext() si usa for-each para recorrer una colección
- 22. Cómo devolver una copia de solo lectura de una colección
- 23. C# Cómo recorrer Properties.Settings.Default.Properties que cambian los valores
- 24. ¿Cómo ordeno una colección?
- 25. AddRange en una colección
- 26. ¿Cuál es la mejor manera de agregar un solo elemento a una colección IEnumerable?
- 27. VBA - Cómo agregar una colección a una colección de colecciones
- 28. ¿Cómo transpone dimensiones en una colección 2D utilizando LINQ?
- 29. cómo combinar una colección de colecciones en Linq
- 30. Cómo puede recorrer constante Perl
Esto es más rápido que .ElementAt(). Lamentablemente, mi voto está bloqueado en la respuesta de Alexa, así que no puedo deshacerlo, pero esta es la mejor respuesta. +1 –