我正在使用Aspose单元格来操作Excel电子表格。API中的一种类型是电子表格中的图片集合,它派生自CollectionBase:
请参阅此链接:http://www.aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.html
我希望将此类型转换为允许我使用Linq表达式的类型
对此有哪些选择?
我想我可以遍历它并手动将它添加到new List<Picture>
中,但是有没有更好的方法呢?
我已经阅读了这个问题Adding IEnumerable to class derived from CollectionBase
但我显然无法控制实现CollectionBace的类,因为它是第三方产品
发布于 2009-10-15 10:10:38
只需在非通用IEnumerable
接口上使用Enumerable.Cast()
扩展方法,您可以在查询表达式中隐式执行此操作:
var query = from Picture picture in pictures
where ...
select ...;
或者显式地,例如,如果您想使用点表示法:
var query = pictures.Cast<Picture>()
.Where(...)
.Select(...);
Cast<T>()
的另一种选择是OfType()
-它基本上忽略了任何不是正确类型的元素。在这种情况下,我认为Cast<T>()
更合适。
如果您出于某种原因想要将整个集合转换为List<T>
,这也很容易:
List<Picture> list = pictures.Cast<Picture>().ToList();
https://stackoverflow.com/questions/1571425
复制相似问题