Datatable select () - поиск числового шаблона - PullRequest
2 голосов
/ 20 декабря 2011


У меня возникла проблема с методом Select() в моей таблице данных.

Если я хочу найти в моем DataTable несколько шаблонов (функция поиска)

Дляstring Columns «Like» работает

Select(String.Format("Requester like '%{0}%'", tb_RequesterSearch.Text))

, но мне также нужно проверить числовые шаблоны в моем числовом столбце

, если я попробую что-то вроде

For Each drOrder As DataRow In dsDatabase.Tables("ProjektImport").Select(String.Format("PONumber like '%{0}%'", convert.toDouble(tb_POSearch.Text)))
     'Do something
Next

iвсегда получаю исключение, что «Мне нравится» не является поддержкой для числовых столбцов.

Существует ли эквивалентная функция или способ преобразования моего столбца в строку (только в select)?

Спасибозаранее

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

LIKE Выражения не работают с числовыми столбцами. Вы можете добавить дополнительный столбец varchar в таблицу данных через select-clause (до его заполнения) или использовать следующий способ LINQ:

Dim PONumber As Double
If Double.TryParse(tb_POSearch.Text, PONumber) Then
    Dim PONumber_Pattern As String = "*" & PONumber & "*"
    Dim query As IEnumerable(Of DataRow) =
        From row In dsDatabase.Tables("ProjektImport").AsEnumerable()
        Where DirectCast(row("PONumber"), Double).ToString Like PONumber_Pattern
        Select row
    If query.Any Then
        For Each row As DataRow In query
             ' Do whatever you want with this DataRow '
        Next
    End If
End If

Не путайте выражение ADO.NET LIKE с LIKE-оператором VB.NET , которое я использовал здесь для простоты и работы. Я мог бы также использовать String.Contains или RegularExpression для достижения того же, это компромисс между производительностью и гибкостью.

0 голосов
/ 20 декабря 2011

Попробуйте это:

... dsDatabase.Tables("ProjektImport").Select(String.Format("PONumber = {0}", tb_POSearch.Text))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...