如何使用LINQ查询过滤BindingSource作为DataSource

Ute*_*sil 6 .net data-binding filter

我在使用过滤器来处理作为DataGridView控件的DataSource的BindingSource时遇到了麻烦.基本上,我有LINQ查询,它是BindingSource的DataSource,我想过滤掉结果.下面是我想要完成的一个例子.

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'"
Run Code Online (Sandbox Code Playgroud)

...

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
Run Code Online (Sandbox Code Playgroud)

所以,我可以看到DataGridView控件中的所有行,但过滤器没有任何效果.如果我将BindingSource的DataSource切换为使用DataTable,则过滤按预期工作.我错过了什么?

Sve*_*ler 4

来自 BindingSource 文档:

Filter 属性通常用于复杂的数据绑定场景,它允许您查看数据源的子集。仅实现 IBindingListView 接口的底层列表支持过滤