Trier un tableau de collections sur l'une des clefs (keys) des collections qu'il contient

Répondre

Code de confirmation
Saisissez le code exactement comme vous le voyez dans l’image. Notez que le code n’est pas sensible à la casse.
Smileys
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

Les BBCodes sont activés
[img] est activé
[flash] est désactivé
[url] est activé
Les smileys sont activés

Revue du sujet
   

Étendre la vue Revue du sujet : Trier un tableau de collections sur l'une des clefs (keys) des collections qu'il contient

Trier un tableau de collections sur l'une des clefs (keys) des collections qu'il contient

par admin » 24 janv. 2021 09:56

Imaginons le tableau de collections suivant:

Code : Tout sélectionner

    Dim tmp_col As Collection[] = New Collection[]
    
    tmp_col.Add([
       "name": "toto4",
       "test": "quattre"
    ])
        tmp_col.Add([
       "name": "toto6",
       "test": "six"
    ])
        tmp_col.Add([
       "name": "toto1",
       "test": "un"
    ])
        tmp_col.Add([
       "name": "toto3",
       "test": "trois"
    ])
    
Nous écrivons la fonction suivante:

Code : Tout sélectionner

Public Function ColSort(col As Collection[], ColKey As String, trie As Integer) As Collection[]  'Trie d'un tableau de collection sur la clef demandée
   Dim tmp_col As Collection[] = New Collection[col.count]
   Dim tmp_ar As String[] = New String[]
   
   For i As Integer = 0 To col.count - 1
      tmp_ar.Add(col[i][Colkey] & " (" & i & ")")
   Next
   
   tmp_ar.Sort(trie)   
   For i = 0 To tmp_ar.count - 1
      tmp_col[i] = col[CInt(Split(tmp_ar[i], " ()", "", True)[1])]
   Next
   Return tmp_col
End
Et nous l'appelons de cette manière:

Code : Tout sélectionner

 tmp_col = ColSort(tmp_col, "name", gb.Ascent)
Et voila, En énumérant les collections dans le tableau, elles sont triées dans l'ordre ascendant !
Olivier

Haut