2010-08-20 5 views
2

Mon problème est de trouver exactement un objet de calendrier à partir d'une liste de (calendrier) en passant une date particulière. J'ai appris à connaître le prédicat mais je ne suis pas sûr de passer le paramètre. Color code is Liste de (Calendrier) et la classe de calendrier a une propriété appelée DtmDate avec laquelle je veux comparer et retourner l'objet désiré.Comment puis-je transmettre des paramètres supplémentaires à un prédicat?

Dim a As Calendar = colourcode.Find(AddressOf New Calendar.FindByDate) 

J'ai obtenu les échantillons de prédicat de Google et j'ai atteint jusqu'à maintenant. Mais je ne sais pas comment passer mon paramètre, c'est-à-dire la date.

Répondre

3

Vous devrez créer votre propre prédicat. Vous pouvez le faire en utilisant un lambda et en "soulevant" des variables locales, vous pouvez le paramétrer. Voici un exemple assez stupide pour .NET 3.5/Visual Studio 2008:

Dim lookFor As String = "e" 
Dim predicate = Function(s as String) s.Contains(lookFor) 

Dim list As New List(Of String) 
list.Add("alfa") 
list.Add("beta") 
list.Add("gamma") 
list.Add("delta") 
Dim foundString As String = list.Find(predicate) 

Remarquez comment vous pouvez modifier la valeur de lookFor pour rechercher d'autres chaînes.

Dans .NET 4/Visual Studio 2010 Visual Basic a plus expressif expressions lambda:

+0

Merci! J'ai une autre solution ici http://gist.github.com/295062 – Antoops

Questions connexes