将 CollectionBase 转换为 List 或可用于 Linq 的数据类型

发布于 2024-08-07 08:00:50 字数 651 浏览 2 评论 0原文

我正在使用 Aspose 单元格来操作 Excel 电子表格。 API 中的类型之一是电子表格中的图片集合,它派生自 CollectionBase:

请参阅此链接: http://www .aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.html

我想将此类型转换为允许我使用 Linq 表达式的

类型对此的选择?

我想我可以迭代它并手动将其添加到新列表<图片> 但有更好的方法吗?

我读过这个问题 添加 IEnumerable;到从 CollectionBase 派生的类

但我显然无法控制实现 CollectionBace 的类,因为它是第三方产品

I am using Aspose cells to manipulate Excel spreadsheets.
One of the types in the API is a collection of Pictures in the spreadsheet, which derives from CollectionBase:

see this link:
http://www.aspose.com/documentation/.net-components/aspose.cells-for-.net/aspose.cells.pictures.html

I want to convert this type to something that allows me to use Linq expressions

What are the options for this?

I guess I could iterate over it and manually add it to a new List<Picture>
But is there a better way to do this?

I have read this question
Adding IEnumerable<T> to class derived from CollectionBase

But I obviously don't have control over the class that implements CollectionBace as it is a third party product

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

涫野音 2024-08-14 08:00:50

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

var query = from Picture picture in pictures
            where ...
            select ...;

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

var query = pictures.Cast<Picture>()
                    .Where(...)
                    .Select(...);

Cast< 的替代方法;T>()OfType()- 基本上忽略任何类型不正确的元素。在这种情况下,我认为 Cast() 更合适。

如果您出于某种原因想要将整个集合转换为 List,这也很简单:

List<Picture> list = pictures.Cast<Picture>().ToList();

Just use the Enumerable.Cast<T>() extension method on the non-generic IEnumerable interface, which you can do implicitly in a query expression:

var query = from Picture picture in pictures
            where ...
            select ...;

or explicitly, for instance if you want to use dot notation:

var query = pictures.Cast<Picture>()
                    .Where(...)
                    .Select(...);

An alternative to Cast<T>() is OfType<T>() - which basically ignores any elements which aren't of the right type. In this case I think Cast<T>() is more appropriate though.

If you want to convert the whole collection to a List<T> for whatever reason, that's easy too:

List<Picture> list = pictures.Cast<Picture>().ToList();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文