IEnumerable<Book> _Book_IE
List<Book> _Book_List
¿Cómo debo hacer para convertir _Book_List
a IEnumerable
formato?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
¿Cómo debo hacer para convertir _Book_List
a IEnumerable
formato?
Respuestas:
No es necesario convertirlo. List<T>
implementa la IEnumerable<T>
interfaz por lo que ya es enumerable.
Esto significa que está perfectamente bien tener lo siguiente:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
tanto como:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
que podría invocarse:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Puede usar el método de extensión AsEnumerable en el espacio de nombres Assembly System.Core y System.Linq:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Esto, como se dice en este enlace de MSDN, cambiará el tipo de Lista en tiempo de compilación. Esto le dará los beneficios también de enumerar solo su colección que necesitábamos (vea el ejemplo de MSDN para esto).
¿Por qué no usar un solo revestimiento ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Hasta donde yo sé List<T>
implementos IEnumerable<T>
. Significa que no tienes que convertir ni lanzar nada.
IEnumerable<IList<obj>>
a en an IEnumerable<IEnumerable<obj>>
, aparece un error de compilador ya que el segundo no hereda del primero.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Si es la variante genérica:
_Book_IE = _Book_List;
Si desea convertir a uno no genérico:
IEnumerable ie = (IEnumerable)_Book_List;