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 に答える