c# - Casting IEnumerable<T> a la lista<T>
ienumerable c# (5)
Como otros sugirieron, simplemente use el método ToList()
en un objeto enumerable:
var myList = myEnumerable.ToList()
Pero, si su objeto IEnumerable
no tiene el método ToList()
y obtiene un error como el siguiente:
''IEnumerable'' no contiene una definición para ''ToList''
probablemente te esté perdiendo el espacio de nombres System.Linq
, así que solo agrégalo:
using System.Linq
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?
Cree una nueva lista y pase el antiguo IEnumerable a su inicializador:
IEnumerable<int> enumerable = GetIEnumerable<T>();
List<int> list = new List<int>(enumerable);
Utilice el método .ToList ().
yourEnumerable.ToList();
no, debe copiar, si está seguro de que la referencia es una referencia a la lista, puede convertir así
List<int> intsList = enumIntList as List<int>;
Como ya se sugirió, use yourEnumerable.ToList()
. Enumera a través de su IEnumerable
, almacenando los contenidos en una nueva List
. No necesariamente estás copiando una lista existente, ya que tu IEnumerable
puede estar generando los elementos perezosamente.
Esto es exactamente lo que están sugiriendo las otras respuestas, pero más claro. Aquí está el desmontaje para que pueda estar seguro:
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
return new List<TSource>(source);
}