无法过滤DataRows

时间:2013-12-18 04:56:10

标签: vb.net winforms filter datatable

我正在使用以下代码从我的数据表中选择特定行但问题是它只搜索列中的完整匹配内容

Dim strExpr = "`" + callerAHeader_Name + "` = " & iSrch & ""
Dim strSort = callerAHeader_Name + " DESC"
Dim foundRows As DataRow()

foundRows = ds.Tables(0).[Select](strExpr,strSort)

它工作正常,但搜索匹配我使用的一些词

Dim strExpr = "`" + callerAHeader_Name + "` LIKE '%" & iSrch & "%'"
Dim strSort = callerAHeader_Name + " DESC"
Dim foundRows As DataRow()

foundRows = ds.Tables(0).[Select](strExpr,strSort)

哪个给我错误“无法在System.Double和System.String上执行'Like'操作”

如果我从strExpr中删除了反转的逗号

Dim strExpr = "`" + callerAHeader_Name + "` LIKE %" & iSrch & "%"

它出错语法错误:'Mod'运算符之前缺少操作数。

2 个答案:

答案 0 :(得分:2)

尝试在搜索时转换列值

Dim foundRows = ds.Tables(0).Select("Convert(" & callerAHeader_Name & ", 'System.String') LIKE '*" + TextBox1.Text + "*'")

答案 1 :(得分:0)

使用此:

Dim strExpr = "[" + callerAHeader_Name + "] LIKE '%" + Convert.ChangeType(iSrch, GetType(String)) + "%'"
Dim strSort = "[" + callerAHeader_Name + "] DESC"

编辑: 使用GetType(String)而不是c#equivalent typeof(string)

您也可以使用&运算符以连接vb中的字符串和整数值,但我更喜欢Convert.ChangeType