1

请看下面的代码。

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)
4

1 回答 1

1

Lambda 表达式

lambda 表达式是一个没有名称的函数或子例程,可以在委托有效的任何地方使用。Lambda 表达式可以是函数或子例程,可以是单行或多行。您可以将值从当前范围传递到 lambda 表达式。

Dim increment1 = Function(x) x + 1
Dim increment2 = Function(x)
                     Return x + 2
                 End Function 
于 2012-11-17T13:31:55.160 回答