IEnumerable<Book> _Book_IE
List<Book> _Book_List
Wie soll ich vorgehen, um _Book_List
ins IEnumerable
Format zu konvertieren ?
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Wie soll ich vorgehen, um _Book_List
ins IEnumerable
Format zu konvertieren ?
Antworten:
Sie müssen es nicht konvertieren. List<T>
implementiert die IEnumerable<T>
Schnittstelle so, dass sie bereits aufzählbar 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
}
was aufgerufen werden könnte:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Sie können die Erweiterungsmethode AsEnumerable im Assembly System.Core- und System.Linq-Namespace verwenden:
List<Book> list = new List<Book>();
return list.AsEnumerable();
Dies ändert , wie auf diesem MSDN-Link erwähnt , den Typ der Liste in der Kompilierungszeit. Dies bietet Ihnen den Vorteil, dass Sie nur Ihre benötigte Sammlung auflisten können (siehe MSDN-Beispiel hierfür).
Warum nicht einen Single Liner verwenden ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Soweit ich weiß, List<T>
implementiert IEnumerable<T>
. Es bedeutet, dass Sie nichts konvertieren oder wirken müssen.
IEnumerable<IList<obj>>
zu setzen IEnumerable<IEnumerable<obj>>
, wird ein Compilerfehler ausgegeben, da der zweite nicht vom ersten erbt.
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Wenn es die generische Variante ist:
_Book_IE = _Book_List;
Wenn Sie in die nicht generische konvertieren möchten:
IEnumerable ie = (IEnumerable)_Book_List;