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

C#处理Excel耗材报表统计指定关键词仅统计到antena问题排查

问题排查与修复方案

核心问题清单

  • 仅查询单条记录:代码中使用FirstOrDefault()只获取了第一条符合过滤条件的耗材记录,其余所有行的耗材数据完全未参与统计,这是最核心的问题。
  • 多余无效的外层循环:foreach (var s in suppliesquery.ToString().ToLower())是遍历字符串的单个字符,会导致内部的拆分统计逻辑重复执行N次(N为字符串长度),最终统计结果是实际值的N倍,逻辑完全错误,该层循环可以直接删除。
  • 匹配规则问题:
    1. 拼写不匹配:需求要统计的英文关键词battery、antenna,但报表中的实际值是Bateria、Antena拼写,代码中的匹配字符串和需求、报表实际值三者不统一,导致匹配不到目标内容。
    2. 完全匹配限制过严:switch中天线的匹配规则是必须完全等于antena plana,如果报表中存在单独的Antena无Plana后缀的记录,会直接匹配失败。
    3. 未处理空白字符:拆分字符串后没有做Trim处理,若报表中逗号后带有空格(比如Antena Plana, Bateria),拆分出来的 Bateria会因为带前导空格无法匹配case。
  • 统计范围错误:现有逻辑只统计单个记录的耗材,应该遍历所有符合条件的TaskSuppliesUsed记录,而非仅取第一条。

修复后参考代码

// 查询所有符合条件的耗材记录,不要用FirstOrDefault取单条
var suppliesList = (from sm in db.TaskSuppliesUsed
                   let suppliesLower = sm.suppliesUsed.ToString().ToLower()
                   where suppliesLower.Contains("bateria")  || // 和报表实际值统一
                         suppliesLower.Contains("antena") ||
                         suppliesLower.Contains("sim")     ||
                         suppliesLower.Contains("simcard")
                   select sm).ToList();

int bateria = 0;
int simcard = 0;
int antena = 0;

// 遍历所有耗材记录
foreach (var record in suppliesList)
{
    // 拆分后先Trim空白字符再匹配
    string[] insumos = record.suppliesUsed.ToString().ToLower()
                            .Split(',')
                            .Select(x => x.Trim())
                            .ToArray();
    foreach (var i in insumos)
    {
        switch (i)
        {
            case "bateria":
                bateria++;
                break;
            case "sim":
            case "simcard":
                simcard++;
                break;
            // 如果需要同时匹配带plana和不带的,可调整为两个case或者用包含判断
            case "antena":
            case "antena plana":
                antena++;
                break;
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:48:01