我有一个类型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实现我想要做的事情?
答案 0 :(得分:12)
使用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>>