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