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 confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    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 Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    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 ...

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

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    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 confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    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 Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    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

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

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    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 Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    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...

  8. #8
    Membre chevronné 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 : 44
    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
    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));

+ 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