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);
}