我正在使用 Aspose 单元格来操作 Excel 电子表格。API 中的一种类型是电子表格中的图片集合,它派生自 CollectionBase:
我想将此类型转换为允许我使用 Linq 表达式的类型
有哪些选择?
我想我可以遍历它并手动将其添加到 anew List<Picture>
但是有更好的方法吗?
我已阅读此问题 将 IEnumerable<T> 添加到从 CollectionBase 派生的类
但我显然无法控制实现 CollectionBace 的类,因为它是第三方产品
我正在使用 Aspose 单元格来操作 Excel 电子表格。API 中的一种类型是电子表格中的图片集合,它派生自 CollectionBase:
我想将此类型转换为允许我使用 Linq 表达式的类型
有哪些选择?
我想我可以遍历它并手动将其添加到 anew 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>
出于某种原因将整个集合转换为 a,这也很容易:
List<Picture> list = pictures.Cast<Picture>().ToList();