我在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的任何建议吗?
答案 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))