我有一个未绑定到数据库表的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);
}
}
}
感谢。
答案 0 :(得分:0)
编辑:您可以针对每种数字数据类型(也就是值类型)测试每条记录,但可能需要的操作数量取决于您想要的数字数据类型,因为-2.323是数字,但它不是一个int。也不是9,223,372,036,854,775,807。因此,不是针对每种值类型进行测试,而是使用正则表达式的解决方案。
ALSO:如果你能用LINQ做到这一点我不会感到惊讶
我只tested the RegEx portion,但您可以这样做:
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);
}