在DataGridView上的A上查看列数据类型,该数据类型不绑定到C#中的数据源



i有一个数据库表不绑定的datagridView。在我的程序中,我想检查仅数字并将其存储在列表中的列。

List<string> ColumnNamesWithNumericTypes = new List<string>();
        foreach (DataGridViewColumn dgvCol in dgv.Columns)
        {
            foreach (DataGridViewRow dgvRow in dgv.Rows)
            {
                  // what is a good code to check for this condition?
              if ( the column is fully of a numeric type(int)) 
                {
                    ColumnNamesWithNumericTypes.Add(dgvCol.Name);
                }
            }
        }

谢谢。

edit:您可以针对每个数字数据类型(又称值类型(测试每个记录,但是可能需要的操作数量取决于哪些数字数据类型您想要,因为-2.323是一个数字,但不是INT。两者都不是9,223,372,036,854,775,807。因此,这是使用正则表达式的解决方案,而不是针对每种值类型进行测试。

另外:如果您可以使用linq

进行此操作,我不会感到惊讶

我只测试了正则部分,但是您可以做这样的事情:

using System.Text.RegularExpressions;

然后..

List<string> ColumnNamesWithNumericTypes = new List<string> ( );
        foreach (DataGridViewColumn dgvCol in dgv.Columns)
        {
            string columnname = dgvCol.Name;
            bool isnumeric = false;
            foreach (DataGridViewRow row in dgv.Rows)
            {
                if (Regex.IsMatch (row.Cells[columnname].Value , @"^[-]?([-.d]+?)$"))
                    isnumeric = true;
                else
                {
                    isnumeric = false;
                    break;
                }
            }
            if (isnumeric == true) ColumnNamesWithNumericTypes.Add (columnname);
        }

最新更新