我想根据给定的阈值过滤数据表。这些阈值是字符串,但值是“数字”。并选择数据表将其转换为整数。
阈值定义如下:
custFrom = "1070000"
custTo = "69020"
我有一个带有代码的数据表,因此我想对dt进行选择查询,因为我想过滤给定范围内的值。
CodeList.select("[CCode] >= "+ custFrom + " AND [CCode] <="+ custTo + " ").CopyToDataTable
select的作用是给我一个像数字一样的范围,而不是字符串。我的意思是: 值602应该包含在范围内,但不包括:
“ 602”>“ 1070000”和“ 602” <“ 69020”->是
有什么方法可以在数据表(CodeList)上使用select,但可以使用vb.net功能(例如字符串比较)而不将值转换为整数?
答案 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
谢谢你的想法!