質問

私は、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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top