Подтвердить что ты не робот

Преобразование из списка в формат IEnumerable

IEnumerable<Book> _Book_IE
List<Book> _Book_List

Как мне сделать, чтобы преобразовать формат _Book_List в IEnumerable?

4b9b3361

Ответ 1

Вам не нужно конвертировать это. 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);

Ответ 2

Вы можете использовать метод расширения AsEnumerable в сборочном пространстве имен System.Core и System.Linq:

List<Book> list = new List<Book>();
return list.AsEnumerable();

Это, как сказано в этой ссылке MSDN, изменит тип списка во время компиляции. Это также даст вам возможность перечислять только необходимую нам коллекцию (см. Пример MSDN).

Ответ 3

Почему бы не использовать Single liner...

IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;

Ответ 4

Насколько я знаю, List<T> реализует IEnumerable<T>. Это означает, что вам не нужно ничего переводить или делать что-либо.

Ответ 5

IEnumerable<Book> _Book_IE;
List<Book> _Book_List;

Если это общий вариант:

_Book_IE = _Book_List;

Если вы хотите преобразовать его в не общий:

IEnumerable ie = (IEnumerable)_Book_List;

Ответ 6

Вам нужно

using System.Linq;

использовать IEnumerable параметры на вашем List.

Ответ 7

Почему бы не _Book_IE.AddRange(_Book_List); ?