Запрос Linq по типу словаря <int, double> - PullRequest
2 голосов
/ 25 сентября 2010

У меня есть словарь типа Dictionary<int, double> и я хочу исключить значения, равные определенному значению.

На данный момент у меня есть

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

И получаю ошибку:

Невозможно неявно преобразовать тип 'System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<int,double>>' в 'System.Collections.Generic.Dictionary<int,double>'. Существует явное преобразование (вам не хватает приведения?)

Как мне добиться того, что я пытаюсь сделать, используя Linq?

1 Ответ

12 голосов
/ 25 сентября 2010

Использование LINQ:

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

Причина, по которой вы получаете ошибку компиляции, заключается в том, что Select является расширением IEnumerable. В случае Dictionary<TKey,TValue> вы имеете дело с IEnumerable<KeyValuePair<TKey,TValue>>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...