Mam wyrażenia lambda inline, które chciałbym użyć całej mojej aplikacji. Ja po prostu nie może się znaleźć odniesienie w jaki sposób to zrobić z więcej parametrów niż element w fazie testów. Oto krótki przykład tego, co obecnie mam.mogę użyć metody zamiast wyrażenia lambda z dodatkowymi parametrami
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
wiem, że IEnumerable.Where
przyjmuje metodę z typem elementów jako parametr i powracającego logiczną.
Chciałbym przekazać zmienną Search również do FindName. Po prostu wydaje mi się, że nie mogę uzyskać takiej składni. Jedynym rozwiązaniem, które wymyśliłem, jest przekazanie wszystkiego do funkcji umożliwiającej wykonanie oryginalnego komunikatu.
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
Nie czuj się zobowiązany do odpowiedzi w VB.
skrócona moje podejście delegata [] (http://stackoverflow.com/a/9036948/284240). –