wake-up-neo.com

Konvertieren Sie aus der Liste in das IEnumerable-Format

IEnumerable<Book> _Book_IE
List<Book> _Book_List

Wie muss ich vorgehen, um _Book_List in IEnumerable-Format zu konvertieren?

69
What'sUP

Sie müssen es nicht konvertieren. List<T> implementiert die IEnumerable<T> - Schnittstelle, so dass es bereits eine Aufzählung ist.

Dies bedeutet, dass es vollkommen in Ordnung ist, Folgendes zu haben:

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

ebenso gut wie:

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

die aufgerufen werden könnte:

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

Sie können die Erweiterungsmethode AsEnumerable im Namespace Assembly System.Core und System.Linq verwenden:

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

Dies ändert, wie unter this MSDN link gesagt, den Typ der Liste in der Kompilierzeit .. __ Dies gibt Ihnen die Vorteile, auch nur Ihre Sammlung aufzulisten, die wir benötigten (siehe dazu das MSDN-Beispiel).

37
cdie

Warum nicht einen Single Liner verwenden ...

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

Soweit ich weiß, implementiert List<T>IEnumerable<T>. Es bedeutet, dass Sie nichts konvertieren oder umwandeln müssen.

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

Wenn es sich um die generische Variante handelt:

_Book_IE = _Book_List;

Wenn Sie in eine nicht generische konvertieren möchten:

IEnumerable ie = (IEnumerable)_Book_List;
3
Femaref

Du musst 

using System.Linq;

verwenden Sie IEnumerable-Optionen für Ihre List.

0
Jury