Allora devi fare una cosa un po' più sporca (che in realtà è la stessa cosa che fa il compilatore quando usi una Lambda Expression)
Crei una classe che contenga tutte le variabili che ti servono all'interno del metodo di ricerca, e la funzione che fa i controlli. Quindi, ad esempio, una cosa come questa:
Class PersonFinder
' Il codice della persona da cercare
Dim code As Integer
Public Sub New(ByVal code As Integer)
Me.code = code
End Sub
' Questa funzione controlla che il codice di
'"arg" sia uguale a quello che stiamo cercando
Public Function FindByCode(ByVal arg As Person) As Boolean
If arg.Code = code Then
Return True
Else
Return False
End If
End Function
End Class
Quindi, quando devi usare il metodo Find, istanzi un oggetto di tipo PersonFinder, imposti il codice della persona da trovare e quindi usi come delegato il metodo della classe PersonFinder, in questo modo:
Function FindPersonByCode(ByVal persons As List(Of Person), ByVal code As Integer) As Person
Dim finder As New PersonFinder(code)
Return persons.Find(AddressOf finder.FindByCode)
End Function
Luca