从List转换为IEnumerable格式

时间:2011-01-15 16:10:00

标签: c# asp.net-mvc c#-4.0 ienumerable

IEnumerable<Book> _Book_IE
List<Book> _Book_List

如何将_Book_List转换为IEnumerable格式?

6 个答案:

答案 0 :(得分:126)

您无需转换它。 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);

答案 1 :(得分:39)

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

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

this MSDN link所述,这将在编译时更改List的类型。 这也将为您提供仅列举我们所需的集合的好处(请参阅MSDN示例)。

答案 2 :(得分:12)

为什么不使用单一班轮......

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

答案 3 :(得分:11)

据我所知List<T>实现了IEnumerable<T>。这意味着您无需转换或投射任何内容。

答案 4 :(得分:3)

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

如果是通用变体:

_Book_IE = _Book_List;

如果您想转换为非通用的:

IEnumerable ie = (IEnumerable)_Book_List;

答案 5 :(得分:0)

你需要

using System.Linq;

IEnumerable使用List选项。