Araylist et Icomparer

Résolu
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010 - 27 mai 2009 à 14:30
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 27 mai 2009 à 16:02
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

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
27 mai 2009 à 14:47
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 ! -
3
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
27 mai 2009 à 15:44
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.
3
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
27 mai 2009 à 14:31
Pouvez-vous m'aider? J'avais oublié de poser la question et de vous remercier.
0
rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010
27 mai 2009 à 14:47
link l'erreur aussi plz.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
27 mai 2009 à 15:07
J'ai essayé la solution que vous me proposez mais sans succès. Pouvez-vous la faire avec mon code pleaz?
Merci.
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
27 mai 2009 à 15:28
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.
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
27 mai 2009 à 16:02
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 ! -
0
Rejoignez-nous