Convert from List into IEnumerable format

IEnumerable<Book> _Book_IE
List<Book> _Book_List

How shall I do in order to convert _Book_List into IEnumerable format?

328261 次浏览

您不需要转换它。 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);
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;

如果是通用变体:

_Book_IE = _Book_List;

如果你想转换成非通用的:

IEnumerable ie = (IEnumerable)_Book_List;

据我所知,List<T>实现了 IEnumerable<T>。这意味着你不必转换或强制转换任何东西。

为什么不使用一个单一的班轮..。

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

可以在 Assembly System.Core 和 System.Linq 命名空间中使用扩展方法 AsEnumable:

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

这将在编译时改变 List 的类型,正如在 这个 MSDN 连接中所说的那样。 This will give you the benefits also to only enumerate your collection we needed (see MSDN example for this).

你必须这么做

using System.Linq;

在您的 List上使用 IEnumerable选项。