Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在VB.net中的DataSet.Tables.Select()中使用正则表达式_Regex_Vb.net_Select_Datatable_Dataset - Fatal编程技术网

Regex 如何在VB.net中的DataSet.Tables.Select()中使用正则表达式

Regex 如何在VB.net中的DataSet.Tables.Select()中使用正则表达式,regex,vb.net,select,datatable,dataset,Regex,Vb.net,Select,Datatable,Dataset,我有一个包含多个值的数据集。我想从数据表BLABLA中获取数据集中的那些行,该数据表包含一个数字从0到6的“S”。然后我想在消息框中显示这些信息 我的正则表达式是S[0-6] Dim answer As String = "" Dim myregex As Regex = New Regex("S[0-6]") Dim SearchRows() As DataRow = datasetB.Tables("BLABLA").Select("Data LIKE '%myregex%'") Fo

我有一个包含多个值的数据集。我想从数据表BLABLA中获取数据集中的那些行,该数据表包含一个数字从0到6的“S”。然后我想在消息框中显示这些信息

我的正则表达式是
S[0-6]

Dim answer As String = ""
Dim myregex As Regex = New Regex("S[0-6]")

Dim SearchRows() As DataRow = datasetB.Tables("BLABLA").Select("Data LIKE  '%myregex%'")

For k As Integer = 0 To SearchRows.Length - 1
    If answer = "" Then
        answer = SearchRows(k).Item("Data")
    Else
        answer = answer & vbNewLine & SearchRows(k).Item("Data")
    End If
Next

MsgBox(answer)
不幸的是,
SearchRows
为空。我无法通过调试找到原因。
我做错了什么?

数据表。Select方法不支持正则表达式。如前所述,它确实允许您将一个
filterExpression
字符串作为参数传递给它,但仅仅因为它接受一个过滤器表达式并不意味着它支持正则表达式。相反,它的设计主要是支持与T-SQL中的
WHERE
子句相同类型的表达式。T-SQL的
类似于
运算符,而
数据表也不一样。选择
。请参阅以了解
数据表支持的模式表达式的规则。选择
方法的
LIKE
运算符

LIKE
运算符支持的过滤器表达式没有regex高级,因此几乎肯定不可能构造出如此特定的过滤器表达式。如果有一种方法可以过滤到0到6之间的数字,我不知道,文档中也没有提到。因此,如果确实需要按正则表达式筛选行,您仍然可以这样做,但需要选择所有行,然后自己进行筛选:

Dim SearchRows() As DataRow = datasetB.Tables("BLABLA").Select().
    Where(Function(r) myregex.IsMatch(r.Item("Data").ToString())).
    ToArray()

如何在MessageBox中显示整行?到目前为止,它只是一个名为
Data
的专栏。我不知道如何回答这个问题,因为我不知道你不理解其中的哪一部分。看起来你已经问过了,而且已经得到了回答。所以,如果这还不能回答你的问题,我需要更多的澄清,关于你真正需要什么和你到底不明白什么。无论如何,这是一个不同的问题,最好作为一个新问题提出,而不是在这里的评论中提出:)