DataTable.Select string / int比较

时间:2013-08-30 15:58:55

标签: c# datatable

我疯狂地发现我的网格无法正确显示的原因,并发现我在不使用'(引用)的情况下比较varchar列(仅数值)。 问题是,对于某些数字,选择匹配和其他选择匹配不匹配。

这是一个例子:

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号码是?这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

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

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