LINQのでリストまたはデータ・タイプに使用可能なCollectionBaseに変換
-
21-09-2019 - |
質問
私は、Excelスプレッドシートを操作するためのAspose細胞を使用しています。 APIの種類の一つは、CollectionBaseから派生し、スプレッドシート内の写真のコレクションです。
このリンクを参照してください。 のhttp:// WWW .aspose.com /ドキュメント/ .NETコンポーネント/ aspose.cells-for-.net / aspose.cells.pictures.htmlする
私は私がLINQの式を使用することができます何かにこのタイプを変換したい。
これは何のためのオプションがありますか。
私はそれを反復して、手動new List<Picture>
に追加することができると思います
しかし、これを行うには良い方法はありますか?
私はこの質問を読みました CollectionBaseにの
から派生したクラスへのIEnumerableしかし、それはサードパーティの製品
であるように私は明らかに実装CollectionBaceというクラスを制御できません。解決
ただ、非ジェネリックEnumerable.Cast<T>()
上 IEnumerable
の拡張メソッドを使用しますインタフェース、クエリ式で暗黙的に行うことができます:
var query = from Picture picture in pictures
where ...
select ...;
または明示的に、たとえばあなたは、ドット表記を使用する場合:
var query = pictures.Cast<Picture>()
.Where(...)
.Select(...);
Cast<T>()
の代わりに OfType<T>()
にある - 基本的に任意の要素を無視その右のタイプではありません。この場合、私はCast<T>()
がより適切だと思いますけれどもます。
あなたはあまりにも簡単だ何らかの理由List<T>
にコレクション全体を変換したい場合:
List<Picture> list = pictures.Cast<Picture>().ToList();
所属していません StackOverflow