Comparaison de 2 listes spécifiques [Résolu]

Signaler
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013
-
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
-
Bonjour,

déjà, je ne sais pas si mon sujet est dans la bonne section, mais je ne savais pas trop ou poser ma question. Modérateurs, déplacez cette discussion dans la section appropriée s'il y a besoin, merci.

Donc je vous explique mon problème. J'ai une base de donnée dans laquelle je récupère dans une liste des noms de ficher image jpg (que j'appelerais liste1. Ensuite, j'ai une deuxième liste qui comprends des noms de fichier images présents physiquement dans un dossier bien spécifique (liste2).

Jusque là tout va bien. Maintenant, ce que je dois faire, c'est comparer si mes fichiers jpeg de ma liste2 existe dans ma liste1 pour savoir si je dois supprimer le fichier jpg de mon dossier.

Voilà, donc s'il y a une âme charitable pour m'apporter son aide...

Merci d'avance.

8 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
47
Salut

foreach(string nomFichier2 in liste2)
{
    if(!liste1.Contains(nomFichier2)
    {
        File.Delete(nomFichier2);
    }
}


Attention cependant à la casse. En effet, "C:\\truc.jpg" est différent de "c:\\Truc.JPG". Tu devrais, par exemple, quand tu insères les valeurs dans la liste, utiliser valeur.ToUpper() pour tout mettre en majuscules.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013

Merci pour ta réponse, c'est nickel
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013

Effectivement, après relecture du code par mon chef de projet, il m'a plutôt conseiller d'utiliser les delegate ce que j'ai fait.

Merci aussi pour ta réponse.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
47
Je ne vois tout simplement pas l'intérêt d'utiliser des delegates.
C'est un peu plus compliqué, pas plus rapide, et pas moins gourmand en mémoire...

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
47
Ah, merci pour l'info. Je ne savais pas.

(Bon, toujours est-il que pour 10 millions d'itérations, on peut bien 6 centièmes de seconde de plus ^^)

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
sur une List , oui c vrai c tres peu , sur des gros traitement , la deference peu etre enorme :)

et

liste1.ForEach est de l'object

foreach(string nomFichier2 in liste2) est du procedurale
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
tu peux aussi utliser les delegates

liste1.ForEach(
        delegate(String name)
        {
          liste2.ForEach(
              delegate(String name2)
              {
                     if (String.Compare(name, name2) == 0)
                          File.Delete(name2);
              });
        });