25

Asposeセルを使用してExcelスプレッドシートを操作しています。APIのタイプの1つは、スプレッドシート内の画像のコレクションです。これは、CollectionBaseから派生しています。

このリンクを参照してください: http ://www.aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.html

この型をLinq式を使用できるものに変換したい

このためのオプションは何ですか?

私はそれを繰り返して手動で追加できると思いnew List<Picture> ますが、これを行うためのより良い方法はありますか?

私はこの質問を読みまし たCollectionBaseから派生したクラスにIEnumerable<T>を追加します

しかし、CollectionBaceはサードパーティ製品であるため、私は明らかにCollectionBaceを実装するクラスを制御できません。

4

1 に答える 1

61

Enumerable.Cast<T>()非ジェネリックインターフェイスでextensionメソッドを使用するだけ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();
于 2009-10-15T10:10:37.517 に答える