重置保持密钥的.NET字典

时间:2014-11-22 12:17:38

标签: .net c#-3.0 containers

我有一个Dictionary<K,V>,其中包含一组已知的,不变的密钥。 我想重置字典,但保留键的值,只将值更改为null

我可以先在字典上调用Clear()并重新添加null作为值的对,应该有更好的方法。

1 个答案:

答案 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*/);