bonjour !
voila, j'aimerais trier une collection lesMatieres par ordre alphabetique sur son champs libMatiere.
j'ai créé le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void TriMatieres()
        {
            ArrayList TabTri = new ArrayList();
            TabTri = GetListeMatieres();
            int nbMatieres = GetNbMatieres();
            int i, j;
            string nomObjet;
 
            for (i = 0; i <= (nbMatieres - 1); i++)
            {
                for (j = (nbMatieres - 1); j <= i + 1; j++)
                {
                    if (((ClMatiere)TabTri[j]).GetLibMatiere() < ((ClMatiere)TabTri[i+1]).GetLibMatiere())
                    {
                        ClMatiere Matiere1 = ((ClMatiere)TabTri[j]);
                        ClMatiere Matiere2 = ((ClMatiere)TabTri[j-1]);
 
                        ((ClMatiere)TabTri[j]) = Matiere2;
                        ((ClMatiere)TabTri[j-1]) = Matiere1;
                    }
                }
            }
        }
j'ai 2 problemes.
le premiere est que c# interdit de comparer 2 chaines par (<) alors qu'il m'est indispensable de savoir si une chaine est inferieur à une autre dans l'ordre alphabétique.

la deuxieme vient de ce morceau de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
ClMatiere Matiere1 = ((ClMatiere)TabTri[j]);
ClMatiere Matiere2 = ((ClMatiere)TabTri[j-1]);
 
((ClMatiere)TabTri[j]) = Matiere2;
((ClMatiere)TabTri[j-1]) = Matiere1;
l'echange ne fonctionne pas.

pourriez-vous m'aider svp ?

merci