Solución:
Puede hacer esto de manera muy simple usando LINQ.
Asegúrese de que este uso esté en la parte superior de su archivo C #:
using System.Linq;
Entonces usa el ToList
método de extensión.
Ejemplo:
IEnumerable<int> enumerable = Enumerable.Range(1, 300);
List<int> asList = enumerable.ToList();
En caso de que esté trabajando con un viejo System.Collections.IEnumerable
en lugar de IEnumerable<T>
puedes usar enumerable.Cast<object>().ToList()
Si está utilizando una implementación de System.Collections.IEnumerable
puedes hacer como seguir para convertirlo en un List
. Lo siguiente usa el método Enumerable.Cast para convertir IEnumberable
a un genérico List
.
//ArrayList Implements IEnumerable interface
ArrayList _provinces = new System.Collections.ArrayList();
_provinces.Add("Western");
_provinces.Add("Eastern");
List<string> provinces = _provinces.Cast<string>().ToList();
Si está usando la versión genérica IEnumerable<T>
, La conversión es sencilla. Dado que ambos son genéricos, puede hacer lo siguiente:
IEnumerable<int> values = Enumerable.Range(1, 10);
List<int> valueList = values.ToList();
Pero si el IEnumerable
es nulo, cuando intentas convertirlo en un List
, obtendrás
ArgumentNullException
diciendo que el valor no puede ser nulo.
IEnumerable<int> values2 = null;
List<int> valueList2 = values2.ToList();
Por lo tanto, como se menciona en la otra respuesta, recuerde hacer un null
comprobar antes de convertirlo en un List
.