Tengo una expresión lambda en línea que me gustaría usar en toda mi aplicación. Parece que no puedo encontrar una referencia sobre cómo hacer esto con más parámetros que el elemento que se prueba. Aquí hay un ejemplo rápido de lo que tengo actualmente.¿Puedo utilizar un método en lugar de la expresión Lambda con parámetros adicionales
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
sé que el IEnumerable.Where
acepta un método con el tipo de elemento como un parámetro y un valor booleano de regresar.
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
Me gustaría pasar la variable de búsqueda a FindName también. Simplemente no puedo entender la sintaxis calculada para lograr esto. La única solución de trabajo que he encontrado es pasar todo a una función para realizar la declaración original.
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
No se siente obligado a responder en VB.
acorta mi [enfoque delegado] (http://stackoverflow.com/a/9036948/284240). –