使用 File.ReadAllLines 验证 DataGridView 中的列?

Validate a Column in DataGridView using File.ReadAllLines?

我正在对名为 "KPI" 的特定列进行验证。 我正在做的是制作一个将用于验证列的 .txt 文件。

.txt 文件如下所示。



正如您在记事本中看到的那样,它有 4 个值。

  1. 收入
  2. 销量
  3. 总计
  4. 品牌竞争

除此之外,验证会说,"is NOT valid"。

这是我用来从 .txt 文件中获取值的代码


        List<string> fields = new List<string>();

        var lines = File.ReadAllLines(@"\SMITSHOME01\Home_Folder_1$\vhernandez\My Documents\Visual Studio 2013\validate.txt");
        for (int i = 0; i < lines.Length; i++)
        {
            fields.Add(lines[i]);

        }

但是我不太擅长循环所以我想问是否有人可以帮我做。 现在,我正在做的就是这个。

 for (int i = 0; i < dataGridView.RowCount; i++)
            {

                //MessageBox.Show(dataGridView.Rows[i].Cells["KPI"].Value.ToString()); 
                if (dataGridView.Rows[i].Cells["KPI"].Value.ToString().Contains(fields[i]))
                {
                    //sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is Valid.");
                }

                else if (dataGridView.Rows[i].Cells["KPI"].Value.ToString() == null || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "" || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "KPI" || dataGridView.Rows[i].Cells["KPI"].Value.ToString() == "Category")
                {

                }
                else
                {
                    //MessageBox.Show("Row not decimal:" + " [ " + dataGridView[h, i].Value.ToString() + "] in column "  + dataGridView.Columns[h].Name);
                    sb.AppendLine(dataGridView.Rows[i].Cells["KPI"].Value.ToString() + " is **NOT** Valid.");
                }
            }

我正在使用 .Contains() 进行验证,但由于 for 循环效率低下,我总是得到 System.ArgumentOutOfRangeException

我想在 if .Contains() 中动态添加 fields[] 或以某种方式引用它,有人可以帮助我吗?

附上表格图片供参考:


我认为您的入住 if 条件应该是相反的:

if(fields.Contains(dataGridView.Rows[i].Cells["KPI"].Value.ToString()))