25

我正在使用 Aspose 单元格来操作 Excel 电子表格。API 中的一种类型是电子表格中的图片集合,它派生自 CollectionBase:

看到这个链接: http ://www.aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.html

我想将此类型转换为允许我使用 Linq 表达式的类型

有哪些选择?

我想我可以遍历它并手动将其添加到 anew List<Picture> 但是有更好的方法吗?

我已阅读此问题 将 IEnumerable<T> 添加到从 CollectionBase 派生的类

但我显然无法控制实现 CollectionBace 的类,因为它是第三方产品

4

1 回答 1

61

只需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>出于某种原因将整个集合转换为 a,这也很容易:

List<Picture> list = pictures.Cast<Picture>().ToList();
于 2009-10-15T10:10:37.517 回答