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 :

[C#][2.0] Comment supprimer n éléments d'une collection ?


Sujet :

C#

  1. #1
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut [C#][2.0] Comment supprimer n éléments d'une collection ?
    Bonjour,

    Je souhaite enlever n �l�ments d'une collection (un Dictionnary, mais tant qu'� faire, une m�thode g�n�rique m'irait bien), en fonction d'un pr�dicat. Un peu comme le RemoveAll qu'on trouve dans List<> (mais dans List<> uniquement).

    Et bien, j'avoue que je bloque pour impl�menter �a en O(n). Les seules interfaces dont je dispose pour it�rer sur tous les �l�ments ne supportent pas vraiment qu'on modifie ce sur quoi on it�re...

    Pour l'instant, je ne vois pas d'autre solution que de cr�er une copie du conteneur, d'it�rer sur la copie et de supprimer les �l�ments du conteneur, ce qui me semble tr�s peu efficace. D'autres id�es ?
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  2. #2
    Membre exp�riment� Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par d�faut
    Salut.
    Voila une solution un plus efficace( en O(n) ). On cree une collection qui est vide et on n'ajoute que les elements dont on a besoins
    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
    17
    18
    19
    20
    21
    22
    23
    24
    static void Main(string[] args)
            {
                Dictionary<String, String> d = new Dictionary<string, string>();
                Dictionary<String, String> copy = new Dictionary<string, string>();
     
                int total = 20;
                for (int i = 0; i < total; i++)
                {
                    d["" + i] = "" + i;
                }
     
                foreach (string s in d.Keys)
                {
                    if (!(s.Length == 1))
                    {
                        copy[d[s]] = s;
                    }
                }
     
                foreach (string s in copy.Keys)
                {
                    Console.WriteLine(s);
                }
            }
    J'espre que cela va t'aider. Sinon tu peux regarder sur le projet LINQ ou tu peux faire des requetes sur de type SQL sur tout ce qui implemente l'interface IEnumerable<T>

  3. #3
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    C'est effectivement mieux, m�me si �a me g�ne de passer par un temporaire pour faire �a. Merci.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  4. #4
    Membre �prouv�
    Inscrit en
    Juillet 2005
    Messages
    83
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Par d�faut
    Quitte � passer par du temporaire, puisqu'il s'agit d'un dictionnaire, il suffit de cr�er une liste des clefs des �l�ments � supprimer lors de l'it�ration de la collection, puis d'appeler la m�thode Remove sur chacune de ces clefs.
    C'est peut-�tre un peu moins performant (on it�re sur le dictionnaire, puis sur la collections des clefs des �l�ments � supprimer), mais moins gourmand en ressources.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Comment supprimer les doublons
    Par djelloulc dans le forum MS SQL Server
    R�ponses: 9
    Dernier message: 17/09/2013, 14h30
  2. [Entity] Comment exposer un webservice renvoyant un objet contenant une collection<objet>
    Par igorzup dans le forum Windows Presentation Foundation
    R�ponses: 1
    Dernier message: 05/10/2012, 11h48
  3. R�ponses: 6
    Dernier message: 18/08/2010, 10h42
  4. R�ponses: 2
    Dernier message: 12/04/2010, 10h26
  5. R�ponses: 10
    Dernier message: 26/01/2009, 09h22

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