Как фильтровать 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 фильтрация поддержки интерфейса