Me preguntaba si es posible convertir un IEnumerable en una lista. ¿Hay alguna otra forma de hacerlo que no sea copiar cada elemento en una lista?Casting IEnumerable <T> a la lista <T>
Respuesta
Como ya se ha sugerido, use yourEnumerable.ToList()
. Se enumera a través de su IEnumerable
, almacenando los contenidos en un nuevo List
. No necesariamente está copiando una lista existente, ya que su IEnumerable
puede estar generando los elementos de forma perezosa.
Esto es exactamente lo que sugieren las otras respuestas, pero es más claro. Aquí está el desmontaje por lo que puede estar seguro:
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
return new List<TSource>(source);
}
Utilice el método .ToList().
yourEnumerable.ToList();
Si no está disponible utilizando System.Linq falta :). Esta debería ser totalmente la respuesta aceptada ... – CodingYourLife
no, usted debe copiar, si está seguro de que la referencia se hace referencia a la lista, puede convertir como esto
List<int> intsList = enumIntList as List<int>;
Si está * seguro * de que es una referencia a una lista, debe usar un reparto directo para que arroje una excepción si está equivocado. Use "como" si cree que * podría * ser una Lista
Quizás agregue un 'if (intsList == null) intsList = new List
crear una nueva lista y pasar la edad IEnumerable a su inicializador:
IEnumerable<int> enumerable = GetIEnumerable<T>();
List<int> list = new List<int>(enumerable);
también copia la lista. –
de todos modos tendrá que haber una copia. – Shimmy
Como otros sugirieron, basta con utilizar el método ToList()
en un objeto enumerable:
var myList = myEnumerable.ToList()
Pero, si su objeto IEnumerable
no tiene el método ToList()
y que está recibiendo un error como el siguiente:
'IEnumerable' no contiene una definición para 'ToList'
es probable que se está perdiendo el espacio de nombres System.Linq
, por lo que sólo agregarlo:
using System.Linq
- 1. IEnumerable <IEnumerable <T>> IEnumerable a <T> usando LINQ
- 2. Cómo convertir un IEnumerable <IEnumerable <T>> a un IEnumerable <T>
- 3. Casting List <object> en la lista <T> en tiempo de ejecución
- 4. Casting populated List <BaseClass> a la lista <ChildClass>
- 5. La agrupación de artículos idénticos consecutivos: IEnumerable <T> a IEnumerable <IEnumerable <T>>
- 6. IEnumerable <> to IList <>
- 7. La conversión a IEnumerable <T>
- 8. Obtener un IEnumerable <T> de un IEnumerable <IEnumerable <T>>
- 9. casting ArrayList <String> a String []
- 10. Convertir IEnumerable <T> a string []
- 11. Convertir DataTable a IEnumerable <T>
- 12. C# No se puede convertir de IEnumerable <Base> a IEnumerable <Derived>
- 13. Convertir IEnumerable en la lista <T>
- 14. moldeada recibido objeto a una lista de <object> o IEnumerable <object>
- 15. ¿Cómo puedo convertir IEnumerable <T> en la lista <T> en C#?
- 16. Cómo obtener IEnumerable <T> de la lista <T>?
- 17. ¿Cuál es el beneficio de usar la Lista <T> sobre IEnumerable <T>?
- 18. IEnumerable <string> a cadena
- 19. exportar IEnumerable <T> a Excel
- 20. Casting List <> de la clase derivada a List <> de la clase base
- 21. Fundición de IEnumerable <Object> a IEnumerable <string>
- 22. Por qué IEnumerable <T> se define como IEnumerable <out T>, no IEnumerable <T>
- 23. Lista de fundición <x> a la lista <y>
- 24. Cómo deserializar Enumerable.ToList <>() a la lista <>
- 25. Convertir <Enum> a la lista <string>
- 26. ¿Por qué no puedo lanzar una lista de IEnumerable <T> a una lista de vinculación <t>?
- 27. no puede convertir List <KeyValuePair <...,...>> IEnumerable a <object>?
- 28. Aplanar IEnumerable <IEnumerable <>>; la comprensión de los genéricos
- 29. C# Casting a List <ObjBase> como List <Obj>
- 30. Implementar IEnumerable <T> Para obtener una lista Envoltura
¿arrojará un error si IEnumerable no es nulo pero está vacío? –