#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
в базе данных действительно строка, а не число.