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;