IEnumerable<Book> _Book_IE
List<Book> _Book_List
Come devo fare per convertire _Book_List
in IEnumerable
formato?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Come devo fare per convertire _Book_List
in IEnumerable
formato?
Risposte:
Non è necessario convertirlo. List<T>
implementa l' IEnumerable<T>
interfaccia quindi è già un enumerabile.
Ciò significa che va benissimo avere quanto segue:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
così come:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
che potrebbe essere invocato:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
È possibile utilizzare il metodo di estensione AsEnumerable nello spazio dei nomi Assembly System.Core e System.Linq:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Questo, come detto su questo collegamento MSDN, cambierà il tipo di List in fase di compilazione. Questo ti darà anche i vantaggi di enumerare solo la tua raccolta di cui avevamo bisogno (vedi l'esempio MSDN per questo).
Perché non usare un Single liner ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Per quanto ne so, List<T>
attrezzi IEnumerable<T>
. Significa che non devi convertire o lanciare nulla.
IEnumerable<IList<obj>>
su, IEnumerable<IEnumerable<obj>>
viene visualizzato un errore del compilatore poiché il secondo non eredita dal primo.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Se è la variante generica:
_Book_IE = _Book_List;
Se vuoi convertire a quello non generico:
IEnumerable ie = (IEnumerable)_Book_List;