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 :

Comparer des listes


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 63
    Points
    63
    Par défaut Comparer des listes
    Bonjour à tous.. je viens faire appel à vous car je suis bloqué depuis qq jours la dessus..

    J'ai une class Plugin :

    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 class Plugin
        {
            private string _Name;
            public string Name
            {
                get { return this._Name; }
                set { this._Name = value; }
            }
     
            private string _Version;
            public string Version
            {
                get { return this._Version; }
                set { this._Version = value; }
            }
     
            private bool _LastVersion;
            public bool LastVersion
            {
                get { return this._LastVersion; }
                set { this._LastVersion= value; }
            }
        }
    et une class list de plugin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class ListPlugin : List<Plugin>
        {
        }

    J'arrive a remplir mes class tout va bien, la ou je bloque c'est que j'aimerais comparé des listes entre elles..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // declaration des lists
    ListPlugin _ListPlugin1 = new ListPlugin();
    ListPlugin _ListPlugin2 = new ListPlugin();
    // je remplis mes lists 
    _ListPlugin1 = GetSummaryInstalledPlugins();
    _ListPlugin2 = GetSummaryPlugin2();
    jusque ici tout va bien.. :-)

    quand je dis comparé c'est que j'aimerais faire une nouvelle liste et mettre le bool LastVersion à true ou false, selon si string Version de _ListPlugin2 et supérieur à ListPlugin1

    et je bloque carrement.. merci à vous de votre aide.

  2. #2
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    pour comparer deux chaines de caractères :

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Perso je verrais bien une approche Linq, en faisant une jointure entre les 2 listes selon le nom du plugin.

    Pour plus de clarté, j'ai changé les noms des variables :
    - current = la liste des plugins actuellement installés
    - last = la liste des dernières versions

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    current = GetSummaryInstalledPlugins();
    last = GetSummaryPlugin2();
     
    var joined = 
    	from plast in last
    	join pcurrent in current on plast.Name equals pcurrent.Name
    	select new { Current = pcurrent, Last = plast };
     
    foreach(var item in joined)
    {
        item.Current.LastVersion = (item.Current.Version == item.Last.Version);
    }

    Par contre ça ne détectera pas s'il y a des nouveaux plugins qui ne sont pas encore installés... pour ça il faudrait faire une jointure externe entre les 2 listes :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var joined = 
    	from plast in last
    	join pcurrent in current on plast.Name equals pcurrent.Name into pgroup
    	from p in pgroup.DefaultIfEmpty(new Plugin { Name = plast.Name, Version = null })
    	select new { Current = p, Last = plast };
     
    foreach(var item in joined)
    {
    	// Plugin pas installé, on l'ajoute :
    	if (item.Current.Version == null)
    		current.Add(item.Current);
     
    	item.Current.LastVersion = (item.Current.Version == item.Last.Version);
    }

Discussions similaires

  1. [XL-2010] [Vidéo] comparer des listes grâce à la mise en forme conditionnelle
    Par Pierre Fauconnier dans le forum Excel
    Réponses: 8
    Dernier message: 27/09/2020, 21h36
  2. Comparer des listes incrémentées
    Par zazou123 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/08/2014, 14h33
  3. Comparer des listes de prix
    Par denisfavre dans le forum Access
    Réponses: 8
    Dernier message: 08/11/2005, 20h11

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