begin process at 2012 02 11 18:21:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Maths

 > 

Suppression de données utiliser par une boucle, dans une boucle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Suppression de données utiliser par une boucle, dans une boucle

jeudi 23 avril 2009 à 11:34:07 | Suppression de données utiliser par une boucle, dans une boucle

simlaboum

Bon, en gros:
pour chaque élément d'un liste, si l'élément prend une certaine valeur, je le supprime.

il semblerait que ce ne soit pas prévu et autoriser par Maitre C#. En soit, ça ce tiens, mais il n'y aurait pas un truc du genre: "removeLater()'?

Merci et bien le bonjour chez vous.


Tagadatsointsoin!!!
jeudi 23 avril 2009 à 12:48:05 | Re : Suppression de données utiliser par une boucle, dans une boucle

Bidou

Administrateur CodeS-SourceS
Réponse acceptée !
Avec les méthodes remove et removeAt des listes, non?
Merci de préciser la question voire éven. d'ajouter du code.



-Blog-
-Site Perso-
jeudi 23 avril 2009 à 13:57:45 | Re : Suppression de données utiliser par une boucle, dans une boucle

simlaboum


Voila le code:
                List<string> toto = new List<string>();
                toto.Add("a");
                toto.Add("c");
                toto.Add("d");
                foreach (string lettre in toto)
                {
                    if (lettre == "c")
                    {
                        toto.Remove(lettre);
                    }
                }
Désole, je ne trouve pas comment le mettre avec des belle couleur.

voila l'erreur:
Collection was modified; enumeration operation may not execute.

a+

Tagadatsointsoin!!!
jeudi 23 avril 2009 à 14:13:54 | Re : Suppression de données utiliser par une boucle, dans une boucle

ed73

Réponse acceptée !
Bonjour,

En effet, il n'est pas possible de supprimer ou d'ajouter un élément à une collection pendant qu'on est en train d'itérer dessus.

Une solution pourrait d'être de renseigner une List<int> des index des éléments à suprimer puis d'itérer sur cette liste et d'utiliser RemoveAt  sur ta List<string>

ed73
jeudi 23 avril 2009 à 14:23:12 | Re : Suppression de données utiliser par une boucle, dans une boucle

leprov

Réponse acceptée !
Le plus simple et efficace est simplement de boucler avec un for inversé. Le foreach enmpeche la suppression. Le for n'empeche pas la suppression mais engendre des bugs (evidemment, on loupe des valeurs)

for (int i = myList.Count - 1; i >= 0; --i)
{
myList.RemoveAt(i);
}
jeudi 23 avril 2009 à 14:24:19 | Re : Suppression de données utiliser par une boucle, dans une boucle

simlaboum

Merci bien, finalement, je vais adopté une tournure d'esprit plus positive: créer une liste des éléments que je veux garder...
a+

Tagadatsointsoin!!!
jeudi 23 avril 2009 à 14:28:39 | Re : Suppression de données utiliser par une boucle, dans une boucle

Bidou

Administrateur CodeS-SourceS
ed73> Bien sûr que c'est faisable, et encore heureux!
Ce qui n'est pas possible, c'est de le faire lorsqu'on travaille avec un Enumerator...

La boucle for convient tout à fait, avec les méthodes remove ou removeAt comment indiqué dans le premier poste et dans celui de leprov...



-Blog-
-Site Perso-
jeudi 23 avril 2009 à 15:31:33 | Re : Suppression de données utiliser par une boucle, dans une boucle

ed73

Je me suis exprimé un peu vite, il est bien évident que je voulais parler de foreach.

Par contre il y a des cas (rares) où l'utilisation de for() n'est pas possible. Actuellement je travaille avec Microsoft.Office.Interop.MSProject (automation Microsoft Project) et il faut impérativment parcourir les diverses collections avec un énumérateur car il y a souvent des éléments null dans les collections qui ne sont pas comptabilisés par le Count et ce de manière totalement aléatoire, le seul moyen de ne rien rater est d'utiliser foreach(), mais bon c'est peut-être un bug de Project.

ed73
jeudi 23 avril 2009 à 15:56:35 | Re : Suppression de données utiliser par une boucle, dans une boucle

Bidou

Administrateur CodeS-SourceS
Ha?
Tu as un exemple concret? jamais entendu parlé de ça...



-Blog-
-Site Perso-
jeudi 23 avril 2009 à 16:54:43 | Re : Suppression de données utiliser par une boucle, dans une boucle

ed73

Voici comment je m'en suis aperçu.

Pour itérer sur les ressources affectées à une tâche on avait une boucle

for(int i = 1;i<=Task.Resources.Count;i++)
   if(Task.Resources[i]!=null)
      DoSomething(Task.Resources[i]));

Il manquait systématiquement plusieures ressources, après plusieurs essais j'ai finalement fait un truc stupide pour voir

for(int i = 1;i<=Task.Resources.Count + 10;i++)
   if(Task.Resources[i]!=null)
      DoSomething(Task.Resources[i]));

Eh bien ça a marché jusqu'à Task.Resources.Count + 3 et j'ai récupéré toutes les ressources.

Finalement la solution était

foreach(Resource res in Task.Resources)
   DoSomething(res);

L'itération se fait correctement et je récupère toutes les ressources. Je pense que MSProject ne gère pas les collections comme il faudrait et ne comptabilise pas les éléments null dans le Count.


1 2

Cette discussion est classée dans : boucle, élément, données, utiliser, suppression


Répondre à ce message

Sujets en rapport avec ce message

Quelle technologie utiliser ? [ par NHV ] Bonjour,j'aimerais développer une simulation, ce qui veut dire qu'il y a des changements de données d'affichage dans l'interface à chaque seconde. Je ajout modif et suppression de données [ par flab ] bonjour à tous, je travaille avec une bdd sql sever, j'arrive bien à afficher mes données mais pas à les manipuler (ajout, suppression, modification) suppression des élément recherchés d'une listbox [ par BOUDDINE ] BOnjour tout le mondeSVP si quelqu'un peut m'aiderje vous expliquej'ai une listBOx remplie par des donnéespar exemple tazertya Comment Interdire la suppression d'une base mdb ?? [ par realabdel ] Bonjour tous le monde, j'ai une base de données .mdb partagé dans le réseau, et protégé par un mot de passe. le problème est que n'importe quel utilsa FileSystemWatcher et suppression de dossier [ par Ziman ] Bonjour,je fais un petit programme de surveillance de fichier/dossier et j'ai un petit soucis. J'aimerai réagir à la suppression d'un fichier ou dossi Choix de la base de données [ par zabrat ] Bonjour a tous, je dois faire un projet en c# pour la gestion des resources d'une entreprise. Tous le projet est basé sur le choix de la base de donné récolté des données à partir d'un script pour les utiliser dans un programme [ par draonix ] Bonjour à tous ,Et oui je ne peux m'empêcher de vous enquiquiner avec mes questions mais j'en ai tellement appris grace à vous que je sollicite une fo Méthode simple pour les débutants pour utiliser les bases de données sqlcompaq 3.5 [ par medali1986 ] Aidez moi s'il vous plait donnez une méthode simple pour se connecter à une base de données sql compact 3.5[^^sad1] import des données de excel à scilab [ par brhemzeineb ] Bonjour, je suis débutante avec scilab et je suis bloquée sur un truc, en fait je veux importer des données de excel à scilab et les utiliser j'ai réu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales