IEnumerable<Book> _Book_IE
List<Book> _Book_List
Jak mam zrobić, aby przekonwertować _Book_List
do IEnumerable
formatu?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Jak mam zrobić, aby przekonwertować _Book_List
do IEnumerable
formatu?
Odpowiedzi:
Nie musisz go konwertować. List<T>
implementuje IEnumerable<T>
interfejs, więc jest już wyliczalny.
Oznacza to, że dobrze jest mieć:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
jak również:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
które można by przywołać:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Możesz użyć metody rozszerzenia AsEnumerable w przestrzeni nazw Assembly System.Core i System.Linq:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Jak wspomniano w tym łączu MSDN , spowoduje to zmianę typu listy w czasie kompilacji. Zapewni to również korzyści polegające na wyliczeniu tylko potrzebnej nam kolekcji (zobacz przykład MSDN).
Dlaczego nie użyć pojedynczej wkładki ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
O ile wiem, List<T>
narzędzia IEnumerable<T>
. Oznacza to, że nie musisz niczego konwertować ani rzucać.
IEnumerable<IList<obj>>
na an IEnumerable<IEnumerable<obj>>
, daje to błąd kompilatora, ponieważ druga nie dziedziczy po pierwszej.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Jeśli jest to wariant ogólny:
_Book_IE = _Book_List;
Jeśli chcesz przekonwertować na nieogólny:
IEnumerable ie = (IEnumerable)_Book_List;