Ich habe Probleme, einen Filter für eine BindingSource, die die DataSource für ein DataGridView-Steuerelement ist, zu arbeiten. Im Grunde habe ich eine LINQ-Abfrage, die die DataSource für die BindingSource ist, und ich möchte die Ergebnisse filtern. Unten ist ein Beispiel für das, was ich erreichen möchte.Wie filtere ich eine BindingSource mit einer LINQ-Abfrage als die 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'"
...
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
So kann ich alle Zeilen in der Datagridview-Steuerung sehen, aber die Filter haben keine Wirkung. Wenn ich die DataSource der BindingSource so umschalte, dass sie eine DataTable verwendet, funktioniert die Filterung wie erwartet. Was vermisse ich?