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 :

XML foreach (var .. in .. where ) break? [Débutant]


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut XML foreach (var .. in .. where ) break?
    Titre explicite lol !
    Bon je m'explique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach (var dam in docu.Descendants("Mon_Noeud").Where(d => d.Element("id").Value == mavariable))
    {
        this.variable = dam.Element("Mon_Noeud2").Value;
        if (macondition)
        {
             etc...
        }
    }
    Donc je parcours mon XML pour récupérer la partie du XML ( "Mon_Noeud" ) ou le noeud "id" = "mavariable".
    De la j'attribue la valeur de <Mon_Noeud><Mon_Noeud2>valeur</Mon_Noeud2></Mon_Noeud> à this.variable.
    Et je balance ma condition et mes instructions.
    Le truc c'est que s'il reste des "Mon_Noeud" à vérifier une fois les instructions finis il retourne au foreach... pour rien vue que mon "id" ne peu pas avoir de doublon.
    Puis-je éviter ça ? avec une autre instruction ?
    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach (var dam in docu.Descendants("Mon_Noeud").Where(d => d.Element("id").Value == mavariable))
    {
        this.variable = dam.Element("Mon_Noeud2").Value;
        if (macondition)
        {
             etc...
        }
    break;
    }
    La réponse était dans mon titre... mais quel con... :/
    Désolé.

  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Ouais enfin sauf que le break doit être à l'intérieur du if, sinon ça fait n'importe quoi...

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Ouais enfin sauf que le break doit être à l'intérieur du if, sinon ça fait n'importe quoi...
    Ok
    Mais c'est bizarre ça m'a pas causé de soucis au débuggeur.

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Ben ça va pas causer de problème au débugger, mais...

    Si la première itération ne correspond pas à ton résultat, alors tu vas sortir de la boucle quand même.

    Mais d'après ton message, en fait, c'est surtout la boucle qui te sert à rien.

    T'as pas besoin du foreach en fait (et donc pas du break non plus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        this.variable = docu.Descendants("Mon_Noeud").Where(d => d.Element("id").Value == mavariable)[0];
        if (macondition)
        {
             etc...
        }

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    Ce qui m'intéresse c'est la valeur de "Mon_Noeud2" en connaissant celle de "id"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <xml>
      <Mon_Noeud>
        <id>bidule1</id>
        <Mon_Noeud2>bidule2</Mon_Noeud2>
      </Mon_Noeud>
      <Mon_Noeud>
        <id>bidule3</id>
        <Mon_Noeud2>bidule4</Mon_Noeud2>
      </Mon_Noeud>
    etc...
    </xml>
    Je vais essayer avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.variable = docu.Descendants("Mon_Noeud2").Where(d => d.Element("id").Value == mavariable)[0];
    Mais il a pas l'air de comprendre le [0] à la fin.

  7. #7
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Je ne connais pas la méthode Where, mais j'imagine que si [0] n'est pas pris en charge, tu devrais pouvoir t'en sortir avec un .First() ou équivalent.

    En fait, tu récupère un énumérateur (d'où le foreach) alors qu'un simple élément est amplement suffisant, puisque tu sais déjà que tu vas avoir un et un seul résultat.

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

Discussions similaires

  1. XML et LINQ - Clause WHERE
    Par JLuc01 dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/11/2013, 00h45
  2. while vs foreach var list (@toto)
    Par nkdb dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2006, 21h55
  3. [SQL] Comment ne pas exécuter une clause WHERE si une var est nulle
    Par charlysquare dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/05/2006, 21h12
  4. [SimpleXML] XML et parcours des noeuds avec foreach
    Par kult dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 15/11/2005, 15h36
  5. Réponses: 3
    Dernier message: 05/08/2005, 19h34

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