首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将CollectionBase转换为Linq可用的列表或数据类型

将CollectionBase转换为Linq可用的列表或数据类型
EN

Stack Overflow用户
提问于 2009-10-15 10:08:04
回答 1查看 14.2K关注 0票数 25

我正在使用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的类,因为它是第三方产品

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-15 10:10:38

只需在非通用IEnumerable接口上使用Enumerable.Cast()扩展方法,您可以在查询表达式中隐式执行此操作:

代码语言:javascript
复制
var query = from Picture picture in pictures
            where ...
            select ...;

或者显式地,例如,如果您想使用点表示法:

代码语言:javascript
复制
var query = pictures.Cast<Picture>()
                    .Where(...)
                    .Select(...);

Cast<T>()的另一种选择是OfType() -它基本上忽略了任何不是正确类型的元素。在这种情况下,我认为Cast<T>()更合适。

如果您出于某种原因想要将整个集合转换为List<T>,这也很容易:

代码语言:javascript
复制
List<Picture> list = pictures.Cast<Picture>().ToList();
票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1571425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档