iLogic : valeur maxi

A l'occasion d'une formation iLogic que j'ai donné récemment, un stagiaire m'a demandé comment on pouvait récupérer la valeur la plus grande d'une liste de valeurs provenant d'un paramètre multivaleur.

.NET propose une fonction Max(), mais elle ne prend que 2 arguments. Donc dans ce cas, j'utilise la méthode Max() de Linq. J'ai essayé le code suivant :

values = MultiValue.List("epaisseur")
Logger.Debug("max = {0}", values.Cast(Of String).Max(Function(s) CDbl(s)))

Mais ça ne marche pas, j'ai l'erreur :

Le membre public 'Cast' du type 'ArrayList' est introuvable.

Pourtant ArrayList implémente bien IEnumerable donc ça devrait marcher.

Après avoir cherché un peu, j'ai compris c'était le compilateur qui n'arrivait pas à résoudre le Cast. Il faut l'aider un peu en déclarant le type de la variable :

Dim values As IList = MultiValue.List("epaisseur")
Logger.Debug("max = {0}", values.Cast(Of String).Max(Function(s) CDbl(s)))

Et là ça marche.

Habituellement, j'essaie de conserver le code le plus simple possible dans le cadre de la formation pour ne pas embrouiller les stagiaires, mais parfois la complexité de la technologie sous-jacente refait surface.

Ajouter un commentaire