我找到了实现可扩展BindingList的SortableBindingList的代码,并且从理论上讲,它可以排序和过滤通用对象列表。 可以很好地对列表进行排序,但是我无法过滤。
过滤器代码如下
0
问题是以下示例在子句中像过滤器一样接收字符串,但是由于它等待一个函数,因此编译会出错 我不知道该如何解决
抱歉,如果您不太了解。我的英语说得不好
答案 0 :(得分:2)
您需要传递一个谓词。我希望这个例子能指导您。
Private Function AddFilter(list As List(Of String), filter As Func(Of String, Integer, Boolean)) As List(Of String)
Dim l As IEnumerable(Of String) = Nothing
If Not IsNothing(filter) Then
l = list.Where(filter)
End If
Return l.ToList
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim A As New List(Of String) From {"Mathew", "Mark", "Luke", "John"}
Dim predicate As Func(Of String, Integer, Boolean) = Function(str, index) str.StartsWith("M")
Dim FilteredList = AddFilter(A, predicate)
For Each s As String In FilteredList
Debug.Print(s)
Next
End Sub
答案 1 :(得分:0)
在某些帖子中有一个建议这样做的答案。
您可以使用Dynamic Linq:
暗淡过滤器,如String =“ property1> 10和property2,例如'anystring'或property3 <= 25”。
昏暗的结果= Elements.Where(filter)。
但是我不知道如何使用动态linq