Возможно ли это: Выберите значения формы данных на основе сравнения строк? - PullRequest
0 голосов
/ 07 мая 2019

Я хотел бы отфильтровать данные на основе заданных порогов.Эти пороги являются строками, но значение является «числовым».и выберите в datatable преобразовать его, поскольку они являются целыми числами.

Пороги определены следующим образом:

custFrom = "1070000"
custTo = "69020"

У меня есть таблица данных с кодами, поэтому я попытался выбрать запрос на dt какЯ хотел бы отфильтровать значения в данном диапазоне.

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

Что делает выбор, так это дает мне диапазон, такой как значения, как числа, а не как строка.Что я имею в виду: значение 602 должно быть включено в диапазон, но это не так:

"602"> "1070000" и "602" <"69020" -> ИСТИНА

Есть ли способ использовать select on datatable (CodeList), но с использованием функции vb.net, такой как сравнение строк, и не преобразовывать значения в целые числа?

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

похоже, единственная проблема заключалась не в использовании двойных кавычек, а в одинарных.

Вот запрос, который действительно работает:

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

Спасибо за идеи!

0 голосов
/ 07 мая 2019

Вот ваш ответ: Кажется, вам нужно сделать сравнение по алфавиту, а не по сравнению с числовым. Таким образом, в основном ваша логика гласит: «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)

тогда вы должны рассматривать верхнюю и нижнюю границы как строку при сравнении (одиночные кавычки внутри двойных кавычек) "'число'"

Dim custFrom As String = "'1070000'"
Dim custTo As String = "'69020'"

rows массив теперь содержит 2 строки со значениями {"601", "602"} И это все. Метод Select неявно фильтрует в алфавитном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...