IEnumerable<Book> _Book_IE
List<Book> _Book_List
Як мені зробити, щоб перетворити _Book_List
у IEnumerable
формат?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Як мені зробити, щоб перетворити _Book_List
у IEnumerable
формат?
Відповіді:
Не потрібно його перетворювати. List<T>
реалізує IEnumerable<T>
інтерфейс, тому його вже можна перелічити.
Це означає, що цілком нормально мати таке:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
так само, як:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
які можна викликати:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Ви можете використовувати метод розширення AsEnumerable в просторі імен System.Core та System.Linq:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Як зазначено у цьому посиланні MSDN, це змінить тип Списку під час компіляції. Це дасть вам переваги також лише перерахувати вашу колекцію, яка нам потрібна (див. Приклад MSDN для цього).
Чому б не скористатися одношаровою підкладкою ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Наскільки я знаю List<T>
знаряддя праці IEnumerable<T>
. Це означає, що вам не потрібно нічого перетворювати чи відтворювати.
IEnumerable<IList<obj>>
, IEnumerable<IEnumerable<obj>>
це видає помилку компілятора, оскільки друга не успадковується від першої.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Якщо це загальний варіант:
_Book_IE = _Book_List;
Якщо ви хочете перетворити на не загальний:
IEnumerable ie = (IEnumerable)_Book_List;