在C#字典的键中搜索部分单词并更新其bool值

Vik*_*nte 0 .net c# winforms

我用以下方式声明了一个字典:

public static Dictionary<string,bool> Features {get;set;}
Run Code Online (Sandbox Code Playgroud)

填充此字典后,它具有以下值:

**[Key],[Value]**
module1.add,true
module1.update,true
module1.delete,true
module1.save,true
module1.clear,true
module2.add,true
module2.update,true
module2.delete,true
module2.save,true
...
module10.add,true
module10.update,true
module10.delete,true
module10.save,true
Run Code Online (Sandbox Code Playgroud)

填充后,我需要迭代字典键并更新字典值.

例如:无论我在密钥中使用.add和.delete,其值都需要更新为false.

更新后,它必须如下所示

module1.add,false
module1.update,true
module1.delete,false
module1.save,true
module1.clear,true
module2.add,false
module2.update,true
module2.delete,false
module2.save,true
...
module10.add,false
module10.update,true
module10.delete,false
module10.save,true
Run Code Online (Sandbox Code Playgroud)

让我知道如何遍历字典并更新C#中的值.非常感谢您的帮助.

Jon*_*n B 6

这将获得以.add或.delete结尾的所有键,并将其值更新为false.

Features.Keys.Where(v => v.EndsWith(".add") || v.EndsWith(".delete"))
    .ToList().ForEach(v => Features[v] = false);
Run Code Online (Sandbox Code Playgroud)

这里没有linq:

var targetFeatuers = new List<string>();
foreach (var feature in Features.Keys)
{
    if (feature.EndsWith(".add") || feature.EndsWith(".delete"))
    {
        targetFeatuers.Add(feature);
    }
}

foreach (var feature in targetFeatuers)
{
    Features[feature] = false;
}
Run Code Online (Sandbox Code Playgroud)

请注意,您必须创建单独的键列表,以避免在枚举时修改集合.