VB.Net中DataTable.Select()如何用变量拼接单引号实现查询?
VB.Net中DataTable.Select()使用变量的正确写法
问题根源
你遇到的问题本质是:直接拼接字符串时,若变量值包含单引号(比如O'Neil),会破坏查询语句的语法结构,导致解析出错;而第一种写法未给变量加单引号,被DataTable识别为列名而非值,因此报错找不到对应列。
正确实现方式
1. 转义变量中的单引号
DataTable的查询语法要求,值里的单引号需要用两个单引号转义,拼接前先处理变量:
Dim filter As String = "column = '" & var.Replace("'", "''") & "'" Dim targetRows As DataRow() = DataTable.Select(filter)
这种写法能确保变量里的单引号不会打断语法结构,比如变量值是O'Neil时,转义后会变成O''Neil,符合查询规则。
2. 用VB字符串插值简化写法(VB 2015及以上版本)
如果你的VB版本支持字符串插值,可以用更简洁的方式,同时保留转义逻辑:
Dim filter As String = $"column = '{var.Replace("'", "''")}'" Dim targetRows As DataRow() = DataTable.Select(filter)
3. 更安全的替代方案:Linq查询
不想处理字符串拼接的话,直接用Linq查询DataTable,完全规避单引号转义问题,类型也更安全:
Dim targetRows = From row In DataTable.AsEnumerable() Where row.Field(Of String)("column") = var Select row
内容的提问来源于stack exchange,提问作者Dane Brazinski
相关产品推荐
相关产品推荐

