用 C# 检查数据表的值
Posted
技术标签:
【中文标题】用 C# 检查数据表的值【英文标题】:Check value of datatable with C# 【发布时间】:2020-03-07 12:42:48 【问题描述】:我想检查同一列的数据表的值是否等于“int”,所以如果它是真的,我想用内容值计算总和。这是我的代码,当我单击 sum 按钮“pas tous entier”时,它总是返回。 提前谢谢!
private void button7_Click(object sender, EventArgs e)
int i = 0, s = 0;
String type ="int";
DataTable dt = new DataTable("Table_insertion");
bool exists = dt.AsEnumerable().Any(row => type == row.Field<String>("Type"));
if (exists== true)
for (i = 0; i < dataGridView1.Rows.Count; ++i)
s += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
label5.Text = s.ToString();
else
MessageBox.Show("pas tous entiers");
【问题讨论】:
当所有值实际上都是整数时它是否工作,但如果字符串不能被解释为整数则抛出异常? 看起来你想做类似于How to check if a number is an integer in .NET?的事情 @John Spiegel 当所有值都是整数时它可以工作(不添加 bool 变量和 if 条件),但是如果我添加条件,当我点击求和按钮“pas tous entiers”时它总是返回。当我向数据表中添加一个字符串时,它会显示一个错误! @jazakari no,我想检查数据表中名为“int”的字符串值DataTable dt = new DataTable("Table_insertion");
永远里面有任何数据。
【参考方案1】:
这里似乎不需要数据表。
也许以下就足够了。
for (i = 0; i < dataGridView1.Rows.Count; ++i)
var str = dataGridView1.Rows[i].Cells[2].Value?.ToString();
if( !string.IsNullOrEmpty(str) && Int32.TryParse(str, out var parsed)
s += parsed;
如果要检查数据表中列的类型,可以检查其DataType
。
foreach (var col in datatable1.Columns)
if ( col.DataType == typeof(System.Int16) || col.DataType == typeof(System.Int32)) // Or other types
....
【讨论】:
是的,我试过了,但它显示一个错误 => 无法将对象转换为字符串!! =>if (Int32.TryParse(str, out var parsed) 是的,即使有字符串值它也会返回总和,非常感谢!【参考方案2】:您是否只是想评估返回的字符串是否仅包含数字?如果是这样,您可能希望对数据使用正则表达式匹配。这里有一个很好的例子:Regex for numbers only
【讨论】:
不,我只想检查名为“int”的字符串值是否存在于名为“type”的列的行中以上是关于用 C# 检查数据表的值的主要内容,如果未能解决你的问题,请参考以下文章
c#如何检查SelectedListItem的两个列表是不是具有相同的值
“运行时检查失败 #0 - ESP 的值未在函数调用中正确保存”从 C++ 代码成功 C# 回调后