IEnumerable<Book> _Book_IE
List<Book> _Book_List
Como devo fazer para converter _Book_List
em IEnumerable
formato?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Como devo fazer para converter _Book_List
em IEnumerable
formato?
Respostas:
Você não precisa convertê-lo. List<T>
implementa a IEnumerable<T>
interface, portanto, já é um enumerável.
Isso significa que é perfeitamente normal ter o seguinte:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
assim como:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
que pode ser invocado:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Você pode usar o método de extensão AsEnumerable no namespace Assembly System.Core e System.Linq:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Isso irá, como dito neste link do MSDN, alterar o tipo da Lista em tempo de compilação. Isso lhe dará os benefícios de enumerar apenas a coleção de que precisamos (consulte o exemplo do MSDN para isso).
Por que não usar um único liner ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Tanto quanto eu sei, List<T>
implementos IEnumerable<T>
. Isso significa que você não precisa converter ou lançar nada.
IEnumerable<IList<obj>>
como an IEnumerable<IEnumerable<obj>>
, ocorrerá um erro do compilador, pois o segundo não herda do primeiro.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Se for a variante genérica:
_Book_IE = _Book_List;
Se você deseja converter para um não genérico:
IEnumerable ie = (IEnumerable)_Book_List;