0

我已经通过以下方式声明了一本字典:

public static Dictionary<string,bool> Features {get;set;}

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

**[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

填充后,我需要遍历字典键并更新字典值。

例如:无论我有 .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

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

4

3 回答 3

6

这将获取所有以 .add 或 .delete 结尾的键,并将它们的值更新为 false。

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

这里没有 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;
}

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

于 2012-11-26T15:42:22.007 回答
1
foreach (var item in Features) {
    if (item.Key.Contains("delete") || item.Key.Contains("add"))
        Features[item.Key] = false;
}
于 2012-11-26T15:39:27.497 回答
-1

这就是您更新特定字典中的值的方式。

bool newValue = true;
if (myDictionary.ContainsKey("module10.add")) {
    myDictionary["module10.add"] = newValue;
}

这就是您遍历字典中所有项目的方式。

foreach (string key in myDictionary.Keys) {
    myDictionary[key] = newValue;
}
于 2012-11-26T15:40:20.787 回答