IEnumerable<Book> _Book_IE
List<Book> _Book_List
Bagaimana yang harus saya lakukan untuk mengonversi _Book_List
ke IEnumerable
format?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Bagaimana yang harus saya lakukan untuk mengonversi _Book_List
ke IEnumerable
format?
Jawaban:
Anda tidak perlu mengubahnya. List<T>
mengimplementasikan IEnumerable<T>
antarmuka sehingga sudah dapat dihitung.
Ini berarti tidak masalah untuk memiliki yang berikut ini:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
sebaik:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
yang bisa dipanggil:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Anda dapat menggunakan metode ekstensi AsEnumerable di Assembly System.Core dan namespace System.Linq:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Ini akan, seperti yang disebutkan di tautan MSDN ini, mengubah jenis Daftar dalam waktu kompilasi. Ini akan memberi Anda keuntungan juga untuk hanya menghitung koleksi Anda yang kami butuhkan (lihat contoh MSDN untuk ini).
Mengapa tidak menggunakan Single liner ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Sejauh yang saya tahu List<T>
mengimplementasikan IEnumerable<T>
. Artinya Anda tidak perlu mengubah atau mentransmisikan apa pun.
IEnumerable<IList<obj>>
ke an, IEnumerable<IEnumerable<obj>>
ini memberikan kesalahan kompiler karena yang kedua tidak mewarisi dari yang pertama.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Jika itu varian generik:
_Book_IE = _Book_List;
Jika Anda ingin mengonversi ke non-generik:
IEnumerable ie = (IEnumerable)_Book_List;