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 :

datatable foreach La collection a été modifiée [Débutant]


Sujet :

C#

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Par défaut datatable foreach La collection a été modifiée
    bonjour à tous,

    je veut supprimer des lignes dans une table mysql. j'ai crée une table qui contient les lignes à supprimer lors de l'exécution du code juste la 1ere ligne est supprimée ensuite j'ai le problème suivant :
    La collection a été modifiée ; l'opération d'énumération risque de ne pas s'exécuter.
    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
    14
    15
    16
     
    foreach (DataRow pRow in data.Tables["C_Agricole"].Rows)
                        {
                            //BEGIN DELETE CODE 
     
                            findTheseVals[0] = pRow["identifiant_unique"].ToString();
                            findTheseVals[1] = global.Date(DateTime.Parse( pRow["date_constatation"].ToString()));
                            drCurrent = tblC_Agricole.Rows.Find(findTheseVals);
                            drCurrent = tblC_Agricole.Rows.Find(findTheseVals);
                            drCurrent.Delete();
                            //END DELETE CODE 
                            // CLEAN UP SQL SERVER
                            objCommandBuilder = new MySqlCommandBuilder(adapter);
                            adapter.Update(data, "C_Agricole");
     
                        }

    j'ai besoin de vos aides merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Le principe général c'est que lorsque tu fais une itération sur une collection d'item tu ne modifie pas la collection source avant la fin de l'itération, sinon tu risque d'invalider l'itérateur. Si tu veux modifier le contenu de la collection il te faut récupérer la liste des lignes dans un premier temps puis modifier la collection dans un second temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var toDelete = source.Where(item => RequiresDeletion(item)).ToArray();
    foreach(var itemToDelete in toDelete) source.Remove(itemToDelete);

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Par défaut
    oui je sais le problème d'où il vient mais sauvegarder les lignes à supprimer dans une liste pour ensuite parcourir la datatable pour les supprimer ça revient au même problème non???

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Par défaut
    j'arrive à tester la solution merci bcp elle marche

  5. #5
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Citation Envoyé par oumay Voir le message
    oui je sais le problème d'où il vient mais sauvegarder les lignes à supprimer dans une liste pour ensuite parcourir la datatable pour les supprimer ça revient au même problème non???
    Dans la second boucle ce n'est pas la DataTable qu'il faut parcourir, mais la collection de lignes à supprimer.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/03/2014, 20h46
  2. Remplir un DataTable avec une collection (Dictionnaire)
    Par dragondumond dans le forum VB.NET
    Réponses: 7
    Dernier message: 04/06/2013, 13h18
  3. Réponses: 2
    Dernier message: 17/03/2011, 14h52
  4. Lier un DataTable avec une collection typee
    Par osteinme dans le forum C#
    Réponses: 2
    Dernier message: 29/01/2009, 22h33
  5. Réponses: 15
    Dernier message: 22/07/2008, 14h24

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