请查看下面的代码。
Dim results As IEnumerable(Of Customer) = ExecuteDataReader( _
"SELECT * FROM Customer WHERE Sales> @MinSales", _
Sub(p) p.Add("@MinSales", SqlDbType.Double).Value = 10000.0, _
Function(r) New Customer() With {Name=r("Name"), Address=r("Address"), Sales=r("Sales") })
For Each c As Customer in results
'...
Next
在我发布的上一个问题中,回答者发布了此代码。我不理解代码的sub(p)
或function(r)
部分。
不幸的是,我没有依据来寻找答案。因此,在完成有限的研究后,我已经发布了这个问题。
sub(p)
和function(r)
是什么意思?
更新14:54
请参阅下文。意思是:(Of T)
和ByVal castRow As Function(Of IDataRecord, T)
?
Public Iterator Function ExecuteDataReader(Of T)(ByVal sql As String,
ByVal addParams as Action(Of SqlParameterCollection), ByVal castRow As
Funnction(Of IDataRecord, T)) As IEnumerable(Of T)
答案 0 :(得分:1)
lambda表达式是一个没有名称的函数或子例程,可以在委托有效的任何地方使用。 Lambda表达式可以是函数或子例程,可以是单行或多行。您可以将当前范围中的值传递给lambda表达式。
Dim increment1 = Function(x) x + 1
Dim increment2 = Function(x)
Return x + 2
End Function