var matches = dict.Where(pair => pair.Value=="abc").Select(pair => pair.Key);
Noter que ce ne sera pas même légèrement efficace - c'est un O(N) l'opération, car il a besoin de vérifier chaque entrée.
Si vous avez besoin de le faire souvent, vous pouvez envisager d'utiliser une autre structure de données - Dictionary<,> est spécifiquement conçu pour des recherches par clé.
Vous pourriez si vous voulez obtenir les clés qui ont une valeur qui contient "abc", vous pouvez aussi: var matchs = dict.Où(pair => paire.De la valeur.Contient("abc")) .Sélectionnez(pair => paire.La clé); est juste un raccourci pour Dictionary<TKey, TValue>. Quelle est la taille de votre dictionnaire? Combien de valeurs devez-vous rechercher? Une fois par seconde n'est pas très souvent, si elle est raisonnablement petit dictionnaire et que vous êtes à la recherche d'une seule valeur... Le dictionnaire de la capacité est de 10 touches et 4 valeurs (de"Gauche","Droite","en Avant","Arrière"). Et parfois, la fonction s'exécute environ 10 fois par seconde. Pour une petite collection, vous ne devriez pas vous inquiéter, Cependant, si vous n'utilisez pas le spécial indexation en fonction de Dictionnaire, vous pourriez être mieux avec une Liste<Tuple<int, string>>.
Eh bien, c'est raisonnablement simple avec LINQ:
Noter que ce ne sera pas même légèrement efficace - c'est un
O(N)
l'opération, car il a besoin de vérifier chaque entrée.Si vous avez besoin de le faire souvent, vous pouvez envisager d'utiliser une autre structure de données -
Dictionary<,>
est spécifiquement conçu pour des recherches par clé.est juste un raccourci pour
Dictionary<TKey, TValue>
. Quelle est la taille de votre dictionnaire? Combien de valeurs devez-vous rechercher? Une fois par seconde n'est pas très souvent, si elle est raisonnablement petit dictionnaire et que vous êtes à la recherche d'une seule valeur...Le dictionnaire de la capacité est de 10 touches et 4 valeurs (de"Gauche","Droite","en Avant","Arrière"). Et parfois, la fonction s'exécute environ 10 fois par seconde.
Pour une petite collection, vous ne devriez pas vous inquiéter, Cependant, si vous n'utilisez pas le spécial indexation en fonction de Dictionnaire, vous pourriez être mieux avec une Liste<Tuple<int, string>>.
OriginalL'auteur Jon Skeet
Fonction intégrée? Non désolé... mais d'un autre (pas très belle) est l'itération à l'aide de
foreach(KeyValuePair<integer, string> ...
OriginalL'auteur Leonardo