Page 1 sur 1

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

Posté : 24 janv. 2021 09:56
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