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 :

Obtenir liste des clés ayant certaines valeur dans un dictionnaire C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 107
    Par défaut Obtenir liste des clés ayant certaines valeur dans un dictionnaire C#
    Bonjour,

    Je n'arrive pas à avoir une méthdode simple pour avoir une liste de clés qui ont la même valeur dans un dictionnaire ?

    Merci de votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    Tu voudrais chercher les clés qui correspondant à une valeur choisie?

  3. #3
    Membre confirmé
    Homme Profil pro
    Developpeur .Net
    Inscrit en
    Mai 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Developpeur .Net
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 32
    Par défaut
    Essayez ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     public List<string> GetKeyList(Dictionary<string,object> dico, string lookUpKey)
    {
       List<string> keysList=new List<string>();
       foreach(KeyValuePair<string,object> item in dico)
       {
          if(item.key == lookUpKey)
          {
               keysList.Add(item.key).
          }
       }
       return keysList;
    }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Algernon2 Voir le message
    Je n'arrive pas à avoir une méthdode simple pour avoir une liste de clés qui ont la même valeur dans un dictionnaire ?
    C'est à dire ? Dans un dictionnaire toutes les clés ont une valeur différente... sinon ça pète quand tu essaies d'insérer une clé déjà présente.

  5. #5
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Si tu veux dire , en gros, donnes moi les clés qui ont une valeur qui se trouve plus d'une fois dans le dictionnaire, voila un exemple :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var groupbyvalue = tondictionnaire 
    	.GroupBy(dico => dico.Value)
    	.Where(g => g.Count() > 1).SelectMany(d => d);



    C'est une base, il y a moyen d'améliorer dépendant de ce que tu veux exactement.

    Evidemment, il faut que la comparaison (Méthode Equals()) entre les objets soit bonne pour qu'il fasse une comparaison correcte dans le grouping.

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    Si tu veux dire , en gros, donnes moi les clés qui ont une valeur qui se trouve plus d'une fois dans le dictionnaire, voila un exemple
    Ou alors, il utilise une notion d'égalité des clefs différente de celle du dictionnaire, mais dans ce cas c'est un problème de design et il ferait mieux d'utiliser par exemple une List<KeyValuePair<K,T>>, avec une implémentation spécifique de Equals, GetHashCode, etc ... sur 'K', et rechercher dans la liste via LINQ.

  7. #7
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    Citation Envoyé par tomlev Voir le message
    C'est à dire ? Dans un dictionnaire toutes les clés ont une valeur différente... sinon ça pète quand tu essaies d'insérer une clé déjà présente.
    Je crois qu'il cherche les clefs du dico dont la valeur associée (pas la clef) apparait plusieurs fois.

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/01/2014, 14h06
  2. Réponses: 1
    Dernier message: 04/04/2013, 01h26
  3. Réponses: 18
    Dernier message: 28/02/2013, 17h59
  4. Réponses: 1
    Dernier message: 18/06/2010, 14h50
  5. Réponses: 4
    Dernier message: 11/12/2009, 13h27

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