我使用的Aspose细胞操纵Excel电子表格。 其中一个API中的类型是图片的电子表格,从CollectionBase中派生的集合:
看到此链接: http://www.aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.html
我想这种类型的东西,让我使用Linq表达式转换
什么是这个选项?
我想我可以遍历并手动将它添加到一个new List<Picture>
但是,有没有更好的方式来做到这一点?
我已经阅读这个问题增加了IEnumerable <T>到自CollectionBase派生类
但我显然不具备在实现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();