et en ayant décoché la référence Microsoft.VisualBasic
Je dispose d'une List Of dont une variable string contient
003
010
012
002
Je souhaite récupérer dans une variable string le + grand nombre et faire + 1 sur celui-ci.
J'ai utilisé :
Dim newCode As String
For Each item In ListePersonnel.Select(Function(c) c.Code).OrderByDescending(Function(c) c.ToString)
newCode = CStr(CInt(CDbl(item.ToString) + 1).ToString("000"))
Exit For
Next
MessageBox.Show(newCode)
newCode me renvoie correctement "013".
Est-ce la bonne méthode ???
J'essaie de passer par une syntaxe du genre
Dim test As String = (From y In ListePersonnel.Select(Function(x) x.Code).OrderByDescending(Function(c) c.ToString)).First.ToString test = CStr(CInt(CDbl(test) + 1).ToString("000")) MessageBox.Show(test)
Dim test As String = CStr(CInt(CDbl((From y In ListePersonnel.Select(Function(x) x.Code).OrderByDescending _
(Function(c) c.ToString)).First.ToString) + 1).ToString("000"))
MessageBox.Show(test)
Si tous les "nombres" de la liste ont bien ce format alors l'ordre alphabétique = l'ordre numérique.
Donc pour trier tu n'a is pas besoin de tous les convertir, sur 1000 enregistrements tu vas gagner un peu de temps d'exécution.
En plus, tu peux sortir les valeurs min et max avec le sujet méthodes éponymes.
Dim toto() as string = {"003","010","012","002"}
Dim max as string = (Convert.Tostring(toto.Max()) + 1).Tostring("000")
En complément, Max parcoure la collection une seule fois, alors qu'un tri la parcourra autant de fois que nécessaire.
Donc Max est plus rapide, ou pareil quand la collection est déjà triée.
27 avril 2017 à 05:26
effectivement le script il est bon