我的数据表中的Select()
方法有问题。
如果我想在我的DataTable
中搜索多种模式(搜索功能)
对于字符串列,“赞”工作
Select(String.Format("Requester like '%{0}%'", tb_RequesterSearch.Text))
但我还需要检查数字列中的数字模式
如果我尝试类似
的话For Each drOrder As DataRow In dsDatabase.Tables("ProjektImport").Select(String.Format("PONumber like '%{0}%'", convert.toDouble(tb_POSearch.Text)))
'Do something
Next
我总是得到例外,'Like'不支持数字列。
是否有一个等效的函数或方法将我的列强制转换为字符串(仅在select中)?
提前致谢
答案 0 :(得分:2)
LIKE表达式不适用于数字列。您可以通过varchar
(在填写之前)向DataTable添加其他select-clause
列,或者使用以下LINQ方式:
Dim PONumber As Double
If Double.TryParse(tb_POSearch.Text, PONumber) Then
Dim PONumber_Pattern As String = "*" & PONumber & "*"
Dim query As IEnumerable(Of DataRow) =
From row In dsDatabase.Tables("ProjektImport").AsEnumerable()
Where DirectCast(row("PONumber"), Double).ToString Like PONumber_Pattern
Select row
If query.Any Then
For Each row As DataRow In query
' Do whatever you want with this DataRow '
Next
End If
End If
不要将ADO.NET LIKE Expression与VB.NET的LIKE-Operator混淆,我在这里使用它来保持简单和有效。我也可以使用String.Contains
或RegularExpression
来实现同样的目标,这是性能和灵活性之间的权衡。
答案 1 :(得分:0)
试试这个:
... dsDatabase.Tables("ProjektImport").Select(String.Format("PONumber = {0}", tb_POSearch.Text))