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

VB.NET Discussion :

Problème suppression élément List(of classe) [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    Points : 80
    Points
    80
    Par défaut Problème suppression élément List(of classe)
    Bonjour à tous,

    J'ai une list(of Couple) appelée Liste_presence ,où couple est un objet composé de 2 string : Liste_presence.ID qui est un identifiant et Liste_presence.Mot qui est un mot.

    J'ai une list(of integer) appelée Liste_ID_couple, dont les éléments sont des nombres (qui ont été trouvés a partir d'une datagridview)

    J'aimerai parcourir la Liste_ID_couple et la Liste_presence pour supprimer tout les couples ayant le Liste_presence.ID identique au Liste_ID_Couple.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Dim liste_ID_couple As New List(Of Integer)
     
    'puis procédure qui remplis cette liste_ID_couple a partir de la DGV
    'et ci-dessous la double boucle 
            For j = 0 To liste_ID_couple.Count - 1
                For i = Liste_Presence.Count - 1 To 0 Step -1
                    If Liste_Presence(i).ID.Equals(liste_ID_couple(j)) = True Then
                        Liste_Presence.RemoveAt(i)
                    End If
                Next
            Next
    Problème : aucun élément n'est supprimé. J'ai messageboxé le contenu des listes, et observé que la condition du IF correspondant à la suppression est plusieurs fois respectée. Il doit s'agir d'un problème de syntaxe, mais lequel?
    N'hésitez pas à me demander des infos!
    Merci d'avance!

  2. #2
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Tu boucles sur Liste_Presence.Count et tu lui supprimes des éléments à l'intérieur de la boucle, donc le count est impacté, l'index I n'est plus en phase avec l'item ...
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    Points : 80
    Points
    80
    Par défaut
    Mais je parcours cette liste à l'envers, il ne devrait pas y avoir de soucis?! En plus sur tous les tests que j'ai pu faire, je n'ai jamais eu d'erreur outofrange!

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    Points : 80
    Points
    80
    Par défaut
    MILLE EXCUSES, je viens de revoir la définition de ma classe, qui était défini comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Class Couple_MotId
     
        Public mot As String
        Public ID As String
     
    End Class
    Il suffisait de mettre l'ID en integer........ désolé pour le temps perdu!

  5. #5
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Je suis perplexe ... Et la suppression se passe bien ? Ce sont les bons éléments qui sont supprimés ?


    Regarde cet exemple :
    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
                Dim Listetoto As New List(Of String) From {"Toto1", "2", "3", "Toto4", "Toto5", "6"}
     
                For i As Integer = Listetoto.Count - 1 To 0 Step -1
                    If Listetoto(i).Contains("Toto") Then
                        Listetoto.Remove(i)
                    End If
                Next
     
                For Each tmp In Listetoto
                    Console.WriteLine("---" & tmp)
                Next
     
                '---Toto1
                '---Toto4
                '---Toto5
                '---6
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    Points : 80
    Points
    80
    Par défaut
    Oui la suppression se passe sans soucis, j'ai vérifié plusieurs fois et les bons éléments sont supprimés.
    Dans ton code il te manque peut etre le listetoto.removeAt(i) a la place du remove.
    Qu'est ce qui te parait bizarre en fait?
    Imaginons que j'ai liste1 et liste2

    Si liste1 est parcouru de i = 0 a liste1.count-1, et qu'on ne touche pas au membre de liste1.
    Puis dans cette même boucle on parcours liste2 à l'envers,a chaque fois que je supprime un élément, les autres éléments ayant un index inférieurs à celui ci ne sont pas affecté par le décalage. Et de plus a chaque fois qu'on change de i , le count de liste2 est actualisé non?

  7. #7
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Oui ça semble un peu plus logique ... Faut pas m'en vouloir j'ai eu un grave traumatisme sur les suppressions au sein d'une liste qu'on itère...
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  8. #8
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Un truc comme çà, ca devrait fonctionner aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Liste_Presence.RemoveAll(x => liste_ID_couple.Contains(x.Id));
    " Je préfère comprendre les gens qui ne me comprennent pas "

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

Discussions similaires

  1. Problème suppression élément d'une collection
    Par drake56 dans le forum Langage
    Réponses: 17
    Dernier message: 29/04/2010, 15h50
  2. [JDOM] Problème suppression élément xml
    Par bidulee dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/04/2009, 11h13
  3. STL Problème avec une liste d'instances de class
    Par BruceBoc dans le forum SL & STL
    Réponses: 12
    Dernier message: 16/02/2007, 14h12
  4. Suppression élément dans liste
    Par bugmenot dans le forum C
    Réponses: 12
    Dernier message: 06/12/2005, 19h52
  5. Pb ajouter/suppression élément liste
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/09/2005, 15h54

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