как использовать FIND_IN_SET с dataview.rowfilter в vb.net

#mysql #vb.net

#mysql #vb.net

Вопрос:

Я использую этот код для фильтрации моей таблицы данных по dataview:

         Dim xBlockedAccounts As String = "1,5,7"
        Dim xDv_AllAcc As New DataView(MyVar_Dt_Accounts)
        xDv_AllAcc.RowFilter = "FIND_IN_SET(AccID," amp; xBlockedAccounts amp; ")"
        Me.Dgv3.DataSource = xDv_AllAcc.ToTable
 

но это дает мне это:

Выражение содержит неопределенный вызов функции FIND_IN_SET().’

как я могу использовать функцию FIND_IN_SET с Rowfilter из Dataview?

Комментарии:

1. видишь: Создание DataView из запроса LINQ к DataSet

2. Что такое FIND_IN_SET? Это определяемая пользователем функция?

3. @TnTinMn спасибо, я просмотрел его, но у меня нет опыта работы с LINQ, можете ли вы помочь мне, как применить решение к моему коду, и мне нужно знать причину, по которой фильтр строк не принимает эту функцию.

4. @TnTinMn Я использовал этот код: «Dim запрос = Из порядка в MyVar_Dt_Accounts. AsEnumerable() Где порядок. Поле (логического значения)(«Not FIND_IN_SET(AccID,» amp; xBlockedAccounts amp; «)») Выберите порядок просмотра как DataView = запрос. AsDataView() Dgv3.Источник данных = просмотр

5. @TnTinMn но, как мне кажется, есть ошибка (столбец ‘Not FIND_IN_SET(AccID,)’ не принадлежит таблице)

Ответ №1:

Я предположил MyVar_Dt_Accounts , что это DataTable . У вас должен быть массив значений заблокированных учетных записей. Затем магия Linq.

 Private Sub OPCode()
    Dim MyVar_Dt_Accounts As New DataTable
    Dim xBlockedAccounts = {"1", "5", "7"}
    Dim dt = (From row As DataRow In MyVar_Dt_Accounts.AsEnumerable
              Select row
              Where xBlockedAccounts.Contains(row("AccID").ToString)).CopyToDataTable
    Dgv3.DataSource = dt
End Sub
 

Сначала проверьте, что AccID в базе данных действительно строка, а не число.