Konvertieren Collectionliste oder Datentyp verwendbar mit Linq
-
21-09-2019 - |
Frage
Ich bin mit Aspose Zellen Excel-Tabellen zu manipulieren. Einer der Typen in der API ist eine Sammlung von Bildern in der Tabelle, die ergibt sich aus Collection:
siehe diesen Link: http: // www .aspose.com / Dokumentation / .net-Komponenten / aspose.cells-for-.net / aspose.cells.pictures.html
Ich mag diese Art etwas konvertieren, die ich Linq Ausdrücke verwenden kann
Was sind die Optionen für das?
Ich glaube, ich drüber laufen konnte und es manuell auf einen new List<Picture>
hinzufügen
Aber gibt es einen besseren Weg, dies zu tun?
Ich habe diese Frage gelesen
IEnumerable Hinzufügen
Aber ich offensichtlich nicht über die Kontrolle über die Klasse, die implementiert CollectionBace wie es ein Drittprodukt ist
Lösung
Verwenden Sie einfach die Enumerable.Cast<T>()
Erweiterungsmethode auf der nicht-generic IEnumerable
Schnittstelle, die Sie implizit in einem Abfrageausdruck kann:
var query = from Picture picture in pictures
where ...
select ...;
oder explizit zum Beispiel, wenn Sie wollen Notation verwenden dot:
var query = pictures.Cast<Picture>()
.Where(...)
.Select(...);
Eine Alternative zu Cast<T>()
ist OfType<T>()
- die ignoriert grundsätzlich alle Elemente die nicht von der richtigen Art. In diesem Fall denke ich, Cast<T>()
geeignetere obwohl ist.
Wenn Sie die ganze Sammlung zu einem List<T>
aus irgendeinem Grunde zu konvertieren, die einfach zu ist:
List<Picture> list = pictures.Cast<Picture>().ToList();