You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向List<IBO>添加元素时遇<OfTypeIterator>类型转换错误的解决

解决向List添加元素时的类型转换错误

问题背景

原本初始化List<IBO>的代码是这样的:

var result = BOBase.Search(Mapper.SourceBrowserType, searchCriteria);
var list = new List<IBO>(result.OfType<IBO>());

现在要先创建空列表再添加元素,尝试了下面的代码却触发运行时错误:

var list = new List<IBO>();
var result = BOBase.Search(Mapper.SourceBrowserType, searchCriteria);
list.Add((IBO)result.OfType<IBO>());

错误提示:

Unable to cast object of type '<OfTypeIterator>d__95`1[BO.IBO]' to type 'BO.IBO'.

错误原因

result.OfType<IBO>()返回的是一个IEnumerable<IBO>类型的集合,不是单个IBO对象。而List.Add()方法只能接收单个元素,强行把集合转成单个元素自然会报错。

正确解决方法

有两种简单的处理方式:

方法1:用AddRange()批量添加

List<T>.AddRange()方法专门用来一次性添加整个集合的元素,直接传入result.OfType<IBO>()即可:

var list = new List<IBO>();
var result = BOBase.Search(Mapper.SourceBrowserType, searchCriteria);
list.AddRange(result.OfType<IBO>());

方法2:遍历集合逐个添加

如果需要在添加每个元素前做额外处理(比如校验、修改),可以遍历集合,逐个调用Add():

var list = new List<IBO>();
var result = BOBase.Search(Mapper.SourceBrowserType, searchCriteria);
foreach (var iboItem in result.OfType<IBO>())
{
    // 这里可以加自定义处理逻辑,比如:
    // iboItem.SomeProperty = "updated";
    list.Add(iboItem);
}

内容的提问来源于stack exchange,提问作者vytaute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:37:50