Araylist et Icomparer [Résolu]

Signaler
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
Bonjour, j'utilise Icomparer pour faire un tri mais j'ai un soucis:

 public class UserControllerComparer : IComparer
        {
        public int Compare(UserInfo x, UserInfo y)
             {
            ....................
              }
UserController objUserController = new UserController();
            System.Collections.ArrayList cUser = objUserController.GetUsers(PortalId, false, false);
            UserControllerComparer Comp = new UserControllerComparer();
            cUser.Sort(Comp); // c'est ici monprobléme, il n'accepte pas cette ligne
           GridView1.DataSource = cUser;
            GridView1.DataBind();

7 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
Salut

Ton problème vient du fait qu'une ArrayList n'est pas typée, alors que ton comparateur l'est.
2 solutions :
soit tu utilises une List à la place de ton ArrayList, soit tu fait implémenter IComparer (sans type) par ton UserControllerComparer (qui peut toujours implémenter IComparer)

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

Autant pour moi, pour le cast c'est comme tout cast, il suffit de faire:
                    ToReturn = ((UserInfo)y).UserID.CompareTo(((UserInfo)x).UserID);
Merci encore de votre aide.
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

Pouvez-vous m'aider? J'avais oublié de poser la question et de vous remercier.
Messages postés
61
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
24 février 2010

link l'erreur aussi plz.
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

J'ai essayé la solution que vous me proposez mais sans succès. Pouvez-vous la faire avec mon code pleaz?
Merci.
Messages postés
623
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
15 juin 2010

J'ai choisi la 2ème solution que vous me proposez mais il me demande de caster. Donc ma quetion, comment caster object x, object y en UserInfo par exemple parce que j'ai un truc du style:
                    ToReturn = x.UserID.CompareTo(y.UserID);
C'est ce que je veux caster.
Merci.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
En C#, il y a 2 moyens de faire un cast

la méthode que tu as employée : ((type)maVariable), qui génère une exception en cas d'erreur
et (maVariable as type) qui ne fonctionne que si "type" est nullable, et le résultat est null en cas d'erreur.

De mémoire, je crois que la deuxième méthode est un rien plus rapide que la première.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -