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

C#使用Where方法判断List<string>含指定字符串不生效问题

问题原因
  • 核心错误出在First()方法的使用不符合预期:
    1. First()的返回值是匹配到的字符串元素,不是布尔值,当存在匹配项时,返回的非空字符串会被if判断隐式转换为true,所以这时候碰巧能返回正确结果。
    2. 当不存在匹配项时,Where()方法会返回空序列,First()遇到空序列会直接抛出InvalidOperationException异常,根本不会走到else分支返回false,这就是你说的逻辑不生效的原因。
最优修复方案

直接使用LINQ内置的Any()方法即可,这个方法就是专门用来判断序列中是否存在符合条件的元素,找到第一个匹配项就立即返回true,没有匹配项就返回false,完全符合你的需求,代码可以简化为:

public bool VerifyId(List<string> sheetData)
{
    return sheetData.Any(q => q == "-1007401");
}
替代写法(不推荐)

如果你一定要保留Where的写法,需要把First()替换为FirstOrDefault(),判断返回值是否不为空即可:

public bool VerifyId(List<string> sheetData)
{
    return sheetData.Where(q => q == "-1007401").FirstOrDefault() != null;
}

这种写法性能和Any()一致,但可读性更差,没有必要使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:09:01