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

如何从<string, List<Fruit>>类型字典中删除指定元素并解决CS1503报错

问题解决方法

错误触发原因

  1. 类型不匹配:List<Fruit>的Remove()方法要求传入Fruit类的实例,你传入的是string类型的水果名称,类型不一致直接触发CS1503编译错误。
  2. 遍历逻辑错误:你在通过foreach遍历List<Fruit>的同时修改列表,就算修复类型问题,运行时也会抛出集合被修改的枚举异常。
  3. 语法逻辑错误:内层遍历得到的k是单个Fruit对象,不存在k.Value属性,你实际要操作的是外层字典值对应的i.Value水果列表。

最优实现代码

直接使用RemoveAll方法批量匹配删除,不需要手动遍历列表:

foreach(var dicItem in fruitDic)
{
    dicItem.Value.RemoveAll(f => f.Name == fruitName);
}

如果你需要先筛选再逐个删除,要先把待删除的对象提取到独立列表,避免枚举原列表的同时修改原列表:

foreach(var dicItem in fruitDic)
{
    var toRemoveFruits = dicItem.Value.Where(f => f.Name == fruitName).ToList();
    foreach(var fruit in toRemoveFruits)
    {
        dicItem.Value.Remove(fruit);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:54:03