Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将CollectionBase转换为可用于Linq的列表或数据类型_C#_.net_Linq_Ienumerable_Ienumerator - Fatal编程技术网

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

C# 将CollectionBase转换为可用于Linq的列表或数据类型,c#,.net,linq,ienumerable,ienumerator,C#,.net,Linq,Ienumerable,Ienumerator,我正在使用Aspose单元格处理Excel电子表格。 API中的一种类型是电子表格中的图片集合,它源自CollectionBase: 请参阅此链接: 我想将此类型转换为允许我使用Linq表达式的类型 有哪些选择 我想我可以迭代它并手动将其添加到新列表中 但是有没有更好的方法呢 我看过这个问题 但我显然无法控制实现CollectionBace的类,因为它是第三方产品只需在非泛型的IEnumerable接口上使用扩展方法,您可以在查询表达式中隐式执行此操作: var query = from P

我正在使用Aspose单元格处理Excel电子表格。 API中的一种类型是电子表格中的图片集合,它源自CollectionBase:

请参阅此链接:

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

有哪些选择

我想我可以迭代它并手动将其添加到新列表中 但是有没有更好的方法呢

我看过这个问题

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

只需在非泛型的
IEnumerable
接口上使用扩展方法,您可以在查询表达式中隐式执行此操作:

var query = from Picture picture in pictures
            where ...
            select ...;
或者明确地,例如,如果要使用点表示法:

var query = pictures.Cast<Picture>()
                    .Where(...)
                    .Select(...);
var query=pictures.Cast()
.其中(…)
。选择(…);
Cast()
的另一种选择是-它基本上忽略了任何类型不正确的元素。在这种情况下,我认为
Cast()
更合适

如果出于任何原因想将整个集合转换为
列表
,这也很简单:

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