IEnumerable<Book> _Book_IE
List<Book> _Book_List
Tôi phải làm thế nào để chuyển đổi _Book_List
sang IEnumerable
định dạng?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Tôi phải làm thế nào để chuyển đổi _Book_List
sang IEnumerable
định dạng?
Câu trả lời:
Bạn không cần phải chuyển đổi nó. List<T>
triển khai IEnumerable<T>
giao diện để nó đã là một kiểu liệt kê.
Điều này có nghĩa là hoàn toàn ổn nếu có những điều sau:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
cũng như:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
có thể được gọi:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Bạn có thể sử dụng phương thức mở rộng AsEnumerable trong không gian tên Assembly System.Core và System.Linq:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Điều này, như đã nói trên liên kết MSDN này sẽ thay đổi loại Danh sách trong thời gian biên dịch. Điều này cũng sẽ mang lại cho bạn những lợi ích khi chỉ liệt kê bộ sưu tập của bạn mà chúng tôi cần (xem ví dụ MSDN về điều này).
Tại sao không sử dụng một lớp lót đơn ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Theo như tôi biết các List<T>
dụng cụ IEnumerable<T>
. Nó có nghĩa là bạn không phải chuyển đổi hoặc ép kiểu gì cả.
IEnumerable<IList<obj>>
thành một IEnumerable<IEnumerable<obj>>
nó sẽ gây ra lỗi trình biên dịch vì cái thứ hai không kế thừa từ cái đầu tiên.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Nếu đó là biến thể chung:
_Book_IE = _Book_List;
Nếu bạn muốn chuyển đổi thành không chung chung:
IEnumerable ie = (IEnumerable)_Book_List;
Bạn cần phải
using System.Linq;
để sử dụng IEnumerable
các tùy chọn của bạn List
.