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

C#使用Predicate筛选数据到List时遇类型转换错误

解决Where查询结果无法直接转为List的问题

你遇到的错误是因为LINQ的Where方法返回的是WhereListIterator<T>类型(它实现了IEnumerable<T>接口),并不是List<T>,所以直接强制类型转换会失败。

两种可行的解决方法:

  1. 使用ToList()方法直接生成List实例
public async Task CompareList(List<ListClass> listInstance1)
{
    List<ListClass> listInstance2 = listInstance1.Where(x => x.Active == "A").ToList();
}

ToList()会遍历Where返回的查询结果,创建一个新的List<ListClass>实例,完美匹配变量类型。

  1. 使用AddRange()方法添加元素
public async Task CompareList(List<ListClass> listInstance1)
{
    List<ListClass> listInstance2 = new List<ListClass>();
    listInstance2.AddRange(listInstance1.Where(x => x.Active == "A"));
}

AddRange()支持接收IEnumerable<T>类型的参数,能直接把筛选后的所有元素添加到已初始化的List中。

另外补充:如果你的方法里没有实际的异步操作,async关键字可以去掉,改成public void CompareList(...)或者public Task CompareList(...)(如果需要返回Task的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:12:05