2010-01-14 5 views
1

J'ai rencontré un problème avec un DataTable. Quand je cours au client il jette une exception et mentionne le "in" dans foreach.La collection a été modifiée; l'opération d'énumération peut ne pas s'exécuter

La collection a été modifiée; l'opération d'énumération peut ne pas s'exécuter.

Voici le code:

foreach (DataRow dr in stStatusTable.Rows) 
{ 
    if (Convert.ToInt32(dr["st_id"]) == stStatus.st_id) 
    { 
     dr["st_id"] = Convert.ToInt32(dr["st_id"]) + 1; 
     dr.AcceptChanges(); 

    } 
    else 
    { 

     stStatusTable.Rows.Add(stStatus.st_id, stStatus.st_name, stStatus.RTime, stStatus.Total_Mark, stStatus.Completed); 
    } 
} 

Comment puis-je résoudre ce problème?

+0

Qu'est-ce que cela a à voir avec WCF? Retiré l'étiquette. –

+0

le projet du tout est construit en utilisant wcf c'est la fonction de rappel – ericx

+0

Je ne suis même pas sûr de la langue dans laquelle il se trouve. – bmargulies

Répondre

1

Utilisez une boucle for au lieu d'une boucle foreach. Cependant, faites attention à l'index lorsque vous ajoutez/supprimez des éléments.

+0

pouvez-vous m'aider pour ce plz? – ericx

+0

Où est exactement votre problème? – Matthias

+0

merci je le résous – ericx

2

Becouse vous ajoutez des lignes en même temps que vous les énumérez ..

Vous devez ajouter les lignes à une seconde datatable propre, et après la boucle, copier les lignes de la nouvelle table de données à l'original .

Questions connexes