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

如何将数组数值元素与GridView单元格值进行匹配?

问题分析与修复方案

几个关键问题导致代码未生效

  • 匹配数组未赋值:你仅创建了长度为100的matchN数组,但所有元素默认值为0。若GridView中没有0值,自然不会触发匹配,需先填充目标匹配数值。
  • 数组遍历范围错误:kw从1开始循环,跳过了数组索引0的元素,应改为从0开始遍历至matchN.Length - 1。
  • 未处理索引越界风险:OneRank.Value若超出GridView的行索引范围,会直接抛出异常中断代码,需先判断索引合法性。
  • 提示文本硬编码:固定写死"Number 5",无法体现实际匹配的数值,需动态替换。

修复后的完整代码

// 先给匹配数组填充目标数值(示例填充1-100,替换为你需要的数值)
int[] matchN = new int[100];
for (int i = 0; i < matchN.Length; i++)
{
    matchN[i] = i + 1;
}

foreach (KeyValuePair<double, int> OneRank in MyRank)
{
    // 检查行索引是否在GridView范围内,避免报错
    if (OneRank.Value >= 0 && OneRank.Value < GridView1.Rows.Count)
    {
        int gridNum;
        // 安全转换单元格文本为整数,防止非数字文本导致报错
        if (int.TryParse(GridView1.Rows[OneRank.Value].Cells[2].Text, out gridNum))
        {
            // 遍历数组所有元素(从索引0开始)
            for (int kw = 0; kw < matchN.Length; kw++)
            {
                if (gridNum == matchN[kw])
                {
                    // 动态显示匹配结果,添加换行让消息更清晰
                    TextBox2.Text += $"匹配成功:数值{gridNum}在第2列\r\n";
                    // 若需匹配一次就停止当前行检查,可在此添加break;
                }
            }
        }
    }
}

额外优化:简化匹配逻辑

无需逐个遍历数组,使用Array.Exists可直接判断值是否存在于数组中,代码更简洁:

foreach (KeyValuePair<double, int> OneRank in MyRank)
{
    if (OneRank.Value >= 0 && OneRank.Value < GridView1.Rows.Count)
    {
        int gridNum;
        if (int.TryParse(GridView1.Rows[OneRank.Value].Cells[2].Text, out gridNum) 
            && Array.Exists(matchN, num => num == gridNum))
        {
            TextBox2.Text += $"匹配成功:数值{gridNum}在第2列\r\n";
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:30:47