是否有可能:根据字符串比较从数据表中选择一个值?

时间:2019-05-07 11:48:03

标签: string vb.net select datatable

我想根据给定的阈值过滤数据表。这些阈值是字符串,但值是“数字”。并选择数据表将其转换为整数。

阈值定义如下:

custFrom = "1070000"
custTo = "69020"

我有一个带有代码的数据表,因此我想对dt进行选择查询,因为我想过滤给定范围内的值。

CodeList.select("[CCode]  >= "+ custFrom + " AND [CCode] <="+ custTo + " ").CopyToDataTable

select的作用是给我一个像数字一样的范围,而不是字符串。我的意思是: 值602应该包含在范围内,但不包括:

  

“ 602”>“ 1070000”和“ 602” <“ 69020”->是

有什么方法可以在数据表(CodeList)上使用select,但可以使用vb.net功能(例如字符串比较)而不将值转换为整数?

2 个答案:

答案 0 :(得分:0)

这是您的答案: 看来您需要进行字母比较,而不是数字比较。 因此,基本上您的逻辑说:“ 1070000”被认为是比“ 69020” 更低的值。 因此,假设您有一个包含4行{“ 106”,“ 601”,“ 602”,“ 70000”}和

的列表
Dim dt As DataTable = New DataTable()
dt.Columns.Add("CCode")
dt.Rows.Add("106")
dt.Rows.Add("601")
dt.Rows.Add("602")
dt.Rows.Add("70000")

您需要选择第2行和第3行(“ 601”,“ 602”),这就是您使用的查询语句

Dim rows As DataRow() = dt.Select("[CCode]  >= " + custFrom + " AND [CCode] <= " + custTo)

然后,在比较(双qoutes中的单个qoutes)“'number'”

时,应将上下边界视为字符串
Dim custFrom As String = "'1070000'"
Dim custTo As String = "'69020'"

rows数组现在包含2行,其值分别为{“ 601”,“ 602”} 就是这样。 Select方法按字母顺序隐式过滤。

答案 1 :(得分:0)

看起来唯一的问题不是使用双引号,而是使用单引号。

这是实际有效的查询:

CodeList.select("[CCode] >= '" & custFrom & "' AND [CCode] <= '" & custTo & + "'").CopyToDataTable

谢谢你的想法!