DataTable.选择string/int比较



我疯狂地发现我的网格没有正确显示的原因,并发现我在比较varchar列(只有数值)时没有使用'(引号)。问题是,对于某些数字,select匹配,而对于其他数字,select不匹配。

这是一个例子:

DataTable tab = new DataTable();
tab.Columns.Add("age", typeof(String));
DataRow row1 = tab.NewRow();
row1["age"] = "8";
tab.Rows.Add(row1);
DataRow row2 = tab.NewRow();
row2["age"] = "15";
tab.Rows.Add(row2); 
Console.WriteLine("Rows with age 8="+ tab.Select("age=8").Length);
Console.WriteLine("Rows with age 15=" + tab.Select("age=15").Length);

输出为:

Rows with age 8=0
Rows with age 15=1

为什么8个数字不匹配,而15个数字匹配?这是个虫子吗?

似乎是内部字符串/int比较中的一个错误(功能?)。你必须添加单引号来将数据作为字符串进行比较,或者如果你需要将它们作为整数进行比较,并且你可以使用LINQ,你可以做一些类似的事情

int i = tab.AsEnumerable().Where(x => Convert.ToInt32(x["age"]) == 8).Count(); // 1

最新更新