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 IEnumerab开发者_运维知识库le
format?
You don't need to convert it. List<T>
implements the IEnumerable<T>
interface so it is already an enumerable.
This means that it is perfectly fine to have the following:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
as well as:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
which could be invoked:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
You can use the extension method AsEnumerable in Assembly System.Core and System.Linq namespace :
List<Book> list = new List<Book>();
return list.AsEnumerable();
This will, as said on this MSDN link change the type of the List in compile-time. This will give you the benefits also to only enumerate your collection we needed (see MSDN example for this).
Why not use a Single liner ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
As far as I know List<T>
implements IEnumerable<T>
. It means that you do not have to convert or cast anything.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
If it's the generic variant:
_Book_IE = _Book_List;
If you want to convert to the non-generic one:
IEnumerable ie = (IEnumerable)_Book_List;
You need to
using System.Linq;
to use IEnumerable
options at your List
.
精彩评论