我使用的Aspose细胞来操纵Excel电子表格。 一个API中的类型是图片的电子表格中的一个集合,该集合导出自CollectionBase:

看到这个连结: HTTP:// WWW .aspose.com /文档/ .NET组件/ aspose.cells-for-.net / aspose.cells.pictures.html

我想这种类型的东西,让我使用LINQ表达式转换

哪些选项呢?

我想我能遍历并手动将它添加到一个new List<Picture> 但是,有没有更好的方式来做到这一点?

我已阅读了这个问题 添加的IEnumerable 到自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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top