web-dev-qa-db-fra.com

Convertir de la liste au format IEnumerable

IEnumerable<Book> _Book_IE
List<Book> _Book_List

Comment dois-je faire pour convertir _Book_List au format IEnumerable?

69
What'sUP

Vous n'avez pas besoin de le convertir. List<T> implémente l'interface IEnumerable<T> de sorte qu'il est déjà énumérable.

Cela signifie qu'il est parfaitement correct d'avoir les éléments suivants:

public IEnumerable<Book> GetBooks()
{
    List<Book> books = FetchEmFromSomewhere();    
    return books;
}

aussi bien que:

public void ProcessBooks(IEnumerable<Book> books)
{
    // do something with those books
}

qui pourrait être invoqué:

List<Book> books = FetchEmFromSomewhere();    
ProcessBooks(books);
120
Darin Dimitrov

Vous pouvez utiliser la méthode d'extension AsEnumerable dans l'espace de noms Assembly System.Core et System.Linq:

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

Comme indiqué sur ce lien MSDN changera le type de la liste au moment de la compilation . Cela vous donnera également l’avantage d’énumérer votre collection dont nous avions besoin (voir exemple MSDN pour cela).

37
cdie

Pourquoi ne pas utiliser une seule doublure ...

IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
12
Rahul Chowdhury

Autant que je sache, List<T> implémente IEnumerable<T>. Cela signifie que vous n'avez rien à convertir ou à jeter.

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

Si c'est la variante générique:

_Book_IE = _Book_List;

Si vous voulez convertir en non-générique:

IEnumerable ie = (IEnumerable)_Book_List;
3
Femaref

Tu dois 

using System.Linq;

utiliser les options IEnumerable à votre List.

0
Jury