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 :

Comment parcourrir une collection ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Par défaut Comment parcourrir une collection ?
    Bonjour,
    J'ai ceci qui fonctionne mais le remove me fait sortir de l'itterateur alors qu'il reste des elements à supprimer

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach (XElement result in doc.XPathSelectElements(patern)){
        sortBoucle = false; 
        result.Remove();
    }
    J'ai pensé parcourrir ma collection comme suit mais je n'ai pas encore les notions sur les Enumeration donc ce n'est pas correcte.

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    IEnumerable<XElement>  elements = doc.XPathSelectElements(patern);
    for (int i = 0; i < elements.Count() ;i++ ) {
        // Je veux memoriser cet element
        el = (XElement) elements<i>;  
        //puis je veux ici l'effacer
       elements<i>.Remove();
    }
    // elements<i> est incorrect, [i] aussi, que faut il mettre?
    Merci d'avance

  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
    Deux fautes dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    IEnumerable<XElement>  elements = doc.XPathSelectElements(patern);
    for (int i = 0; i < elements.Count() ;i++ ) {
        // Je veux memoriser cet element
        el = (XElement) elements<i>;  
        //puis je veux ici l'effacer
       elements<i>.Remove();
    }
    C'est element[i] avec des crochets.

    Et après un remove, il faut décrémenter le compteur pour ne pas rater l'élément suivant dans ton ienumerable.

    Ensuite, je sais pas si tu as cherché à savoir pourquoi il ne t'es pas possible de faire un remove dans un foreach. Je te donne quand même l'explication : lorsque tu utilises un foreach, un énumérateur est récupéré à partir de ta collection pour énumérer chaque élément. Si tu retires un élément de la collection originale, ton énumérateur se retrouve dans un état invalide.

Discussions similaires

  1. [C#] Comment créer une collection ?
    Par Dan971 dans le forum C#
    Réponses: 9
    Dernier message: 08/10/2006, 16h13
  2. Comment créer une collection d'objet ?
    Par ced600 dans le forum VBScript
    Réponses: 3
    Dernier message: 11/09/2006, 10h48
  3. [C#]Comment trier une collection?
    Par Cube55 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/06/2006, 19h18
  4. Réponses: 7
    Dernier message: 10/05/2006, 11h15
  5. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20

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