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).
Почему бы не использовать Single liner...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Насколько я знаю, List<T>
реализует IEnumerable<T>
. Это означает, что вам не нужно ничего переводить или делать что-либо.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Если это общий вариант:
_Book_IE = _Book_List;
Если вы хотите преобразовать его в не общий:
IEnumerable ie = (IEnumerable)_Book_List;
Вам нужно
using System.Linq;
использовать IEnumerable
параметры на вашем List
.
Почему бы не _Book_IE.AddRange(_Book_List);
?