Как фильтровать BindingSource с запросом LINQ в качестве источника данных
у меня возникли проблемы с получением фильтра для работы с BindingSource, который является источником данных для элемента управления DataGridView. В принципе, у меня есть запрос LINQ, который является источником данных для BindingSource, и я хотел бы отфильтровать результаты. Ниже приведен пример того, чего я пытаюсь достичь.
Dim query = From row In dataTable _
Select New MyRow(row)
Dim bs As New BindingSource()
bs.DataSource = query.ToList()
grid.DataSource = bs
bs.Filter = "Col1 = 'value'"
...
Public Class MyRow
Private _key As String
Private _col1 As String
Public Sub New(ByVal row As DataTableRow)
_key = GetNewKeyValue()
_col1 = row.Col1
End Sub
Public ReadOnly Property Key() As String
Get
Return _key
End Get
End Property
Public ReadOnly Property Col1() As String
Get
Return _col1
End Get
End Property
End Class
Итак, я вижу все строки в элементе управления DataGridView, но фильтр не имеет никакого эффекта. Если я переключу источник данных BindingSource чтобы использовать DataTable, фильтрация работает так, как ожидалось. Что я упускаю?
1 ответов
из документации BindingSource:
обычно используется в комплексной привязке данных сценарии, свойство Filter позволяет для просмотра подмножества Источник. Только базовых списков реализация IBindingListView фильтрация поддержки интерфейса