将lambda传递给泛型函数

时间:2014-10-21 14:05:49

标签: vb.net generics lambda

我想创建一个可用于包含数据库表中项目的泛型类

如下

Public Class RowCache(Of t)
    Private items As New List(Of t)
    Public Sub AddItem(item As t)
        Me.items.Add(item)
    End Sub
    Public Function find(Filter As ?????) As t
        ????
    End Function
End Class


Public Class useit
    Public Sub test()
        Dim ob As New RowCache(Of teamrow)
        ob.find(func(rec) rec.teamcode)

        Dim ob2 As New RowCache(Of employeerow)
        ob2.find(func(rec) rec.employeeno)
    End Sub
End Class

是否可以创建find方法,如果可以,如何完成

  1. 参数列表中的内容

  2. 如何在查找功能中使用它

1 个答案:

答案 0 :(得分:0)

您可以将lambda传递给find函数,如果找到该项,则返回true。您可以将其与Linq的SingleOrDefault结合使用,以查找已过滤的单个项目。

Public Function find(filter As Func(Of t, Boolean)) As t
    Return Me.items.SingleOrDefault(filter)
End Function

然后你可以像这样使用它:

Dim result = ob.find(Function(rec) rec.teamcode = 1)