Estoy tratando de convertir IList
tipo a List
tipo pero me sale un error cada vez.Emitir IList a la lista
List<SubProduct> subProducts= Model.subproduct;
Model.subproduct
vuelve IList<SubProduct>
.
Estoy tratando de convertir IList
tipo a List
tipo pero me sale un error cada vez.Emitir IList a la lista
List<SubProduct> subProducts= Model.subproduct;
Model.subproduct
vuelve IList<SubProduct>
.
Trate
List<SubProduct> subProducts = new List<SubProduct>(Model.subproduct);
o
List<SubProduct> subProducts = Model.subproducts as List<SubProduct>;
Esta es la respuesta correcta, pero ¿hay algún motivo por el que desee tratar una Lista en lugar de IList? La mayoría de las veces, usar IList es una mejor opción. –
IList
@KeithRousseau Me encontré con el problema cuando necesité utilizar el método AddRange(). – ScubaSteve
List<SubProduct> subProducts= (List<SubProduct>)Model.subproduct;
Los failes de conversión implícitas PORQUE List<>
implementos IList
, no viceversa. Por lo tanto, puede decir IList<T> foo = new List<T>()
, pero no List<T> foo = (some IList-returning method or property)
.
Solo una pequeña puntilla: List
Vaya, eso es correcto. – Webleeuw
¿Qué tal esto:
List<SubProduct> subProducts = Model.subproduct.ToList();
Está disponible solo si tiene acceso a las extensiones definidas en el ensamblado 'System.Linq'. – Suncat2000
Esta debería ser la respuesta aceptada. –
En mi caso he tenido que hacer esto, porque ninguna de las soluciones sugeridas estaban disponibles:
List<SubProduct> subProducts = Model.subproduct.Cast<SubProduct>().ToList();
List<ProjectResources> list = new List<ProjectResources>();
IList<ProjectResources> obj = `Your Data Will Be Here`;
list = obj.ToList<ProjectResources>();
Esto convertiría el objeto IList en objeto de lista.
Esta es la mejor opción para convertir/convertir la lista de objetos genéricos en listas de cadenas.
object valueList;
List<string> list = ((IList)valueList).Cast<object>().Select(o => o.ToString()).ToList();
valueList debe ser una lista de objetos –
es mejor programar contra la interfaz (IList) en lugar de la implimentation (Lista). Es un molde innecesario para ir a la lista. Ahora tiene que agregar el manejo de errores si, por casualidad, una implementación de IList, que no es una lista, entra en la ruta del código. –
Sí, pero 'IList' no tiene cosas que' List' tenga, por ejemplo 'AddRange' –