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

C#查询Dictionary排除指定键返回其余值时结果为空的问题

问题原因

Where子句的过滤逻辑存在根本性错误:

  • 现有判断条件!_chips.ContainsKey(key)和当前遍历的字典项x没有任何关联,是固定布尔值:当传入的key(比如示例中的1500)存在于字典中时,该条件恒为false,会过滤掉字典内所有元素,最终返回空集合。
  • 该逻辑实际效果是「传入存在的key就返回空」,和需求要求的「排除传入key对应的值」完全不符。
修正代码

直接将过滤条件改为判断当前遍历项的键不等于传入参数即可,无需额外调用ContainsKey:

public void Build(int key)
{
    Build(_chips
        .Where(x => x.Key != key)
        .Select(x => x.Value)
        .ToList());
}
逻辑说明
  • 字典遍历项x的Key属性对应当前元素的int类型键,x.Key != key会精准过滤掉和传入键匹配的那一项,剩余的就是你需要的所有其他LinkDto实例。
  • 该写法自带容错:如果传入的key不存在于字典中,会直接返回字典内的全部值,不需要额外做存在性判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:27:22