我有一個內嵌的lambda表達式,我希望在整個應用程序中使用它。我似乎無法找到有關如何使用比被測試元素更多的參數來做到這一點的參考。這是我目前擁有的一個簡單例子。我可以使用方法而不是帶有額外參數的Lambda表達式
Private Sub Test()
Dim List As New List(Of String) From {"Joe", "Ken", "Bob", "John"}
Dim Search As String = "*Jo*"
Dim Result = List.Where(Function(Name) Name Like Search)
End Sub
我知道IEnumerable.Where
接受與元素類型作爲參數和返回布爾值的方法。
Private Sub Test()
Dim List As New List(Of String) From {"Joe", "Ken", "Bob", "John"}
Dim Search As String = "*Jo*"
Dim Result = List.Where(AddressOf FindName)
End Sub
Private Function FindName(Name As String) As Boolean
Return Name Like "*Jo*"
End Function
我想將Search變量也傳遞給FindName。我似乎無法使語法達到此目的。我提出的唯一工作解決方案是將所有內容都傳遞給一個函數來執行原始語句。
Private Sub Test()
Dim List As New List(Of String) From {"Joe", "Ken", "Bob", "John"}
Dim Search As String = "*Jo*"
Dim Result = FindName(List, Search)
End Sub
Private Function FindName(List As IEnumerable(Of String), Search As String) As IEnumerable(Of String)
Return List.Where(Function(Name) Name Like Search)
End Function
不覺得有義務在VB中回答。
縮短我的[委託方式(http://stackoverflow.com/a/9036948/284240)。 – 2012-01-30 12:59:13