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);
您可以在 System.Core 和 System.Linq 命名空间的程序集中使用扩展方法 AsEnumerable :
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>>
,会出现编译器错误,因为后者不继承自前者。 - EmaborsaIEnumerable<Book> _Book_IE;
List<Book> _Book_List;
_Book_IE = _Book_List;
如果您想转换为非泛型版本:
IEnumerable ie = (IEnumerable)_Book_List;
你需要
using System.Linq;
在你的List
中使用IEnumerable
选项。