我有一个Dictionary<K,V>
,其中包含一组已知的,不变的密钥。
我想重置字典,但保留键的值,只将值更改为null
。
我可以先在字典上调用Clear()
并重新添加null
作为值的对,应该有更好的方法。
答案 0 :(得分:4)
您可以使用键并将所有值设置为空
例如
var d = new Dictionary<int, string>();
d.Keys.ToList().ForEach(x => d[x] = null);
这里列出了您可以使用的扩展方法,在您的情况下更好地选择哪些套件并测试其性能
public static class DictionaryExtensions
{
public static Dictionary<K, V> ResetValues<K, V>(this Dictionary<K, V> dic)
{
dic.Keys.ToList().ForEach(x => dic[x] = default(V));
return dic;
}
public static Dictionary<K,V> ResetValuesWithNewDictionary<K, V>(this Dictionary<K, V> dic)
{
return dic.ToDictionary(x => x.Key, x => default(V), dic.Comparer);
}
}
并像
一样使用它var d = new Dictionary<int, string>();
d.ResetValues().Select(..../*method chaining is supported*/);
或
d = d.ResetValuesWithNewDictionary().Select(..../*method chaining is supported*/);