调用泛型函数+ lambda

时间:2011-08-01 15:08:22

标签: vb.net generics lambda

我在vb.net中有这个功能,我从C#转换为我正在进行的项目。

Private Function GetAllFactory(Of T)(ByVal ctor As Construct(Of T)) As List(Of T)

    'TODO: Data Access stuff 
    Dim ds As New DataSet()
    Dim entities = New List(Of T)()

    For Each dataRow As DataRow In ds.Tables(0).Rows
        Dim entity As T = ctor(dataRow)
        entities.Add(entity)
    Next
    Return entities

End Function

和以下代表

Private Delegate Function Construct(Of T)(ByVal dataRow As DataRow) As T

我尝试将代码转换为从C#调用函数到vb.net

Return GetAllFactory(Of MyType)(row >= New MyType(row))

以上行不起作用。我有点卡住了。我没有在C#中使用过lambda,在vb.net中也没用过。

MyType构造函数:

Public Sub New(ByVal dataRow As DataRow)
  .
  .
  .
 End Sub

有关如何调用GetAllFactory的任何建议吗?

2 个答案:

答案 0 :(得分:1)

使用VB中的Function关键字编写lambda表达式:

Return GetAllFactory(Of MyType)(Function(row) New MyType(row))

请注意,>=是比较运算符,而=>是C#中的lamda运算符。 VB可能会为使用=>的代码提供一些意外的错误消息,因为它接受该代码作为>=运算符的未记录别名。

答案 1 :(得分:0)

VB.Net lambda表达式如下所示:

Return GetAllFactory(Of MyType)(Function(row) New MyType(row))