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 :

Verification d'une liste


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut Verification d'une liste
    Bonjour à tous.


    Comment dire. J'ai une liste de variables (disons ListOfVar) , contenues dans un tableau, et pour chaque élément je vérifie qu'il existe au sein d'une autre liste (VarInProj).

    Je voudrais que l'utilisateur ne puisse lancer une procédure que lorsque l'on est sûr que toutes les variables de la ListOfVar sont contenues dans VarInProj.


    Au début, j'ai donc pensé à un booléen que j'ai initialisé à True, et que je passe à faux si une variable n'existe pas dans la List VarInProj.
    Seulement en faisant ça, je n'arrive pas à savoir à quel moment je peux repasser ce booléen à True. (Je fais un foreach sur toutes les variables de ListOfVar pour la vérification)

    Je voulais donc savoir si il existait une sorte de compteur que je pourrais incrémenter à chaque changement d'état d'un booléen par exemple. Quelque chose comme ça. J'espère avoir été assez clair.

  2. #2
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Bonjour,

    Je ne comprends pas bien ton problème, si tu ne dois lancer ta procédure que si les deux listes sont égales, tu déclares ton booléen à True avant ta boucle et dès qu'une variable n'existe pas tu le passes à False et il n'aura pas besoin de repasser à True...

    Petit exemple avec un pseudo code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Boolean areEquals = true;
     
    For each var in ListOfVar
    {
        if !(VarInProj.contains(var))
           areEquals = False; // Ici il passe à false et doit le rester puisque tes listes ne sont pas égales...
    }
    (Le code ne compilera pas hein, je sais plus écrire en C# ^^)

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut
    Autant pour moi. C'est bon désolé pour le message inutile.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut
    Oui tout à fait. J'avais pensé aussi plutot à un int que j'initialise à zéro avant le foreach, et que j'incrémente si une variable n'est pas dans la liste.

  5. #5
    Membre éprouvé

    Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2004
    Messages : 178
    Par défaut
    Si j'ai bien compris ton besoin, ceci pourrait convenir:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    static void Main(string[] args)
            {
                List<string> lstVarInProj = new List<string>();
                lstVarInProj.Add("var1");
                lstVarInProj.Add("var2");
                lstVarInProj.Add("var3");
                lstVarInProj.Add("var4");
                lstVarInProj.Add("var5");
     
                List<string> lstVar = new List<string>();
                lstVar.Add("var1");
                lstVar.Add("var3");
     
                bool VarOK = true;
     
                lstVarInProj.ForEach(delegate(String variable)
                {
                    if (!lstVar.Contains(variable))
                    {
                        VarOK = false;                   
                    }
                });
     
                if (VarOK)
                {
                    // Traitement ...
                }
     
                else
                {
                    // Il manque des variables ...
                }
            }

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut
    Aussi oui, merci !

  7. #7
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool result = lstVar.TrueForAll(lstVarInProj.Contains);
    devrait marcher.

    Pourquoi ?
    Parce que truForAll renvoie true si le prédicat donné en paramètre est vrai pour tous les membres de la liste lstVar
    Parce que Contains est un prédicat (c'est à dire qui associe true ou false à un objet) qui, comme son nom l'indique, renvoie true si l'item qu'on lui passe en paramètre est dans la liste.

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Par défaut
    Oui nickel c'était un truc comme ça que j'avais en tête ! Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. verification qu'une liste est triée
    Par guipe dans le forum Caml
    Réponses: 32
    Dernier message: 11/10/2010, 23h58
  2. Verification d'une liste deroulante
    Par roxxxy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/03/2007, 11h09
  3. Réponses: 4
    Dernier message: 24/04/2003, 22h28
  4. Générer une liste
    Par pfredin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/04/2003, 15h30
  5. tri d'une liste
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2003, 18h08

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