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

Tous ce qui concerne des astuces et des explications sur les bouts de code.
Vous buttez sur un truc, posez votre question ici......
admin
Site Admin
Messages : 29
Enregistré le : 16 déc. 2020 17:59
Localisation : CHAMARANDE

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

Message par admin »

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
Informaticien, Photographe, etc...
Développeur sous Gambas depuis 1999