转换到CollectionBase的列表或数据类型与LINQ的可用
-
21-09-2019 - |
题
我使用的Aspose细胞来操纵Excel电子表格。 一个API中的类型是图片的电子表格中的一个集合,该集合导出自CollectionBase:
看到这个连结: HTTP:// WWW .aspose.com /文档/ .NET组件/ aspose.cells-for-.net / aspose.cells.pictures.html
我想这种类型的东西,让我使用LINQ表达式转换
哪些选项呢?
我想我能遍历并手动将它添加到一个new List<Picture>
但是,有没有更好的方式来做到这一点?
我已阅读了这个问题
添加的IEnumerable
但我显然不具备跨类控制实现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();
不隶属于 StackOverflow