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

C#遍历DataTable行时如何按条件检测多列值 State列匹配失败怎么办

问题排查及解决方法
  • 首先排查最常见的首尾空格问题:CSV读取时很容易把单元格前后的空格带入值中,直接全等匹配会失败,建议先对值做Trim处理
  • 其次排查大小写匹配问题:如果数据源中存在小写/混合大小写的州名,可以启用不区分大小写的匹配逻辑
  • 最后排查空值问题:如果某行的State列为空,直接调用ToString会抛出异常,建议先做非空判断
  • 额外优化建议:原有日期判断采用硬截取字符串的方式稳定性差,建议改为日期类型解析后直接取年份判断,适配不同格式的日期输入
foreach(DataRow row in results.Rows)
{
    // 优化后的日期判断逻辑,兼容性更强
    if (DateTime.TryParse(row["Date"]?.ToString(), out DateTime date) && date.Year == 2021)
    {
        // 先判空、去除首尾空白字符再做匹配
        string stateVal = row["State"]?.ToString()?.Trim() ?? string.Empty;
        // 如需不区分大小写匹配,可替换为下方注释的写法
        // if (stateVal.Equals("CA", StringComparison.OrdinalIgnoreCase))
        if (stateVal == "CA")
        { 
            // 执行所需计算
        }
    }
}

如果调整后仍匹配失败,可添加临时调试代码输出原始值确认是否存在不可见特殊字符:

string rawState = row["State"]?.ToString() ?? "空值";
Console.WriteLine($"原始值:[{rawState}],长度:{rawState.Length}");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:06:06