2010-09-25 5 views
2

J'ai un dictionnaire de type Dictionary<int, double> et que vous voulez éliminer les valeurs égales à une certaine valeur.requête Linq sur Dictionnaire <int, double> type

Au moment où j'ai

Dictionary <int, double> dict = GetDictionary(); 
dict = dict.Where(x => x.Value != 100).Select(x => x); 

Et je reçois l'erreur:

Impossible de convertir implicitement le type 'System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<int,double>>' à 'System.Collections.Generic.Dictionary<int,double>'. Une conversion explicite existe (il vous manque un casting?)

Comment puis-je réaliser ce que j'essaie de faire en utilisant Linq?

Répondre

12

LINQ:

var newDict = dict.Where(kvp => kvp.Value != 100) 
        .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); 

La raison pour laquelle vous obtenez une erreur de compilation est que le produit est une extension sur IEnumerable. Dans le cas d'un Dictionary<TKey,TValue> vous avez affaire à un IEnumerable<KeyValuePair<TKey,TValue>>

+0

Cela fonctionne magnifiquement merci. – Simon

Questions connexes