IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Regroupement d'objet c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut Regroupement d'objet c#
    Bonjour
    j'ai un petit souci que je n'arrive pas à résoudre.

    Voila j'ai un objet :
    Magasin
    avec des proprietes dont une qui s'appelle Type et qui une chaine de caractere

    J'ai un tableau de Magasin avec par exemple si je liste les valeurs Type pour chaque element de mon tableau le résultat suivant :

    Carrefour
    Geant
    Atac
    Geant
    Geant
    Auchan
    Auchan
    Carrefour


    J'aimerai avoir une liste de Magasin triée en fontion des valeurs de Type afin de donner la liste suivante si j'exploitai la proprieté type

    Atac
    Auchan
    Auchan
    Carrefour
    Carrefour
    Geant
    Geant
    Geant

    ex :
    listeMagasin[0].Type -> afficherai 'Atac' et non 'Carrefour' comme actuellement

    En fait je ne sais pas si c'est faisable d'avoir une liste consistante triée en fonction de la valeur d'une proprieté.


    Un grand merci pour votre aide,
    Bien Cordialement,

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Tu travailles avec quelle version de Visual Studio (2005, 2008) ? C# (2.0, 3.5) ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Citation Envoyé par Jérôme Lambert Voir le message
    Tu travailles avec quelle version de Visual Studio (2005, 2008) ? C# (2.0, 3.5) ?
    Oui désolé j'ai complètement zappé de préciser ça !

    vs 2005 et c# 2.0

  4. #4
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Les tableaux ont une méthode Sort et lorsque tu utilises des objets complexes (comme ton objet Magasin), la méthode Sort peut prendre en paramètre un IComparer (ou IComparer<T> pour la version générique). Tu dois donc créer une classe qui implémente l'interface IComparer (je te conseille de passer par la version générique).

    En gros, ça te donnera un truc du genre pour ta classe comparer :

    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
    public class monComparerPourMagasin : IComparer<Magasin>
    {
     
        #region IComparer<Process> Members
     
        public int Compare(Magasin x, Magasin y)
        {
            if (x.Param1 < y.Param1)
                return -1;
            else if (x.Param1 > y.Param1)
                return 1;
            else
                0;
        }
     
        #endregion
    }
    Et lorsque tu voudras trier, tu n'auras qu'à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonArray.Sort(new monComparerPourMagasin());
    Si tu veux des renseignements sur l'interface IComparer, voici les liens vers MSDN :

    http://msdn.microsoft.com/fr-fr/library/system.collections.icomparer(VS.80).aspx
    http://msdn.microsoft.com/fr-fr/library/8ehhxeaf(VS.80).aspx

    En cas de problème, n'hésite pas.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Super merci ça fonctionne parfaitement !

    pour info le code que j'ai utilisé est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public int Compare(Magasin x, Magasin y)
            {
                Magasin magasinA = (Magasin)x;
                Magasin magasinB = (Magasin)y;
                return String.Compare(magasinA.Type, magasinB.Type);
            }

    Le souci que je rencontre apres c tri est un regroupement par element. Je m'explique.

    Mon objet Magasin dispose d'une proprieté Region.

    Je dois représenter les choses comme ceci :


    Nord
    -Carrefour
    -Geant
    -Geant

    Sud
    -Atac
    -Atac
    -Carrefour

    Est
    -Carrefour
    -Carrefour
    -Geant

    le souci que je rencontre c'est que je n'arrive pas à faire ce genre de répartition

    En parcourant simplement la liste comme elle est aujourd'hui j'obtiens ceci :

    Nord
    -Carrefour
    Nord
    -Geant
    Nord
    -Geant

    Sud
    -Atac
    Sud
    -Atac
    Sud
    -Carrefour

    Est
    -Carrefour
    Est
    -Carrefour
    Est
    -Geant



    Quelqu'un aurait il une idée pour réaliser ce genre de répartition ?

    Par avance merci pour votre aide,
    Bien Cordialement,

  6. #6
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Tes données sont elles issues d'une base de données ?

Discussions similaires

  1. [OL-2010] Personnalisation regroupement par champ objet tronqué
    Par acgen dans le forum Outlook
    Réponses: 0
    Dernier message: 11/02/2015, 16h59
  2. Réponses: 10
    Dernier message: 25/05/2010, 14h25
  3. regrouper les objets d'un arraylist
    Par moonila dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 19/06/2009, 10h52
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo