IEnumerable<Book> _Book_IE
List<Book> _Book_List
Comment dois-je faire pour convertir _Book_List
en IEnumerable
format?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Comment dois-je faire pour convertir _Book_List
en IEnumerable
format?
Réponses:
Vous n'avez pas besoin de le convertir. List<T>
implémente l' IEnumerable<T>
interface afin qu'elle soit déjà un énumérable.
Cela signifie qu'il est parfaitement bien d'avoir ce qui suit:
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);
Vous pouvez utiliser la méthode d'extension AsEnumerable dans les espaces de noms Assembly System.Core et System.Linq:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Ceci, comme indiqué sur ce lien MSDN, changera le type de la liste au moment de la compilation. Cela vous donnera également les avantages d'énumérer uniquement votre collection dont nous avions besoin (voir l'exemple MSDN pour cela).
Pourquoi ne pas utiliser une doublure simple ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Autant que je sache, des List<T>
outils IEnumerable<T>
. Cela signifie que vous n'avez rien à convertir ou à lancer.
IEnumerable<IList<obj>>
sur an, IEnumerable<IEnumerable<obj>>
cela donne une erreur de compilation car le second n'hérite pas du premier.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Si c'est la variante générique:
_Book_IE = _Book_List;
Si vous souhaitez effectuer une conversion vers une version non générique:
IEnumerable ie = (IEnumerable)_Book_List;