删除字典中的键

Ari*_*ule 0 c# idictionary

如何根据以下条件删除字典中的指定键?

foreach (var kvp in dict)
            {
                if (kvp.Key.Contains('/'))
                {
                    //delete the key
                }
            }
Run Code Online (Sandbox Code Playgroud)

Dan*_*rth 9

你会这样做:

foreach(var keyToDelete in dict.Keys.Where(x => x.Contains('/')).ToList())
    dict.Remove(keyToDelete);
Run Code Online (Sandbox Code Playgroud)

这里重要的是呼吁ToList()之后Where.这将把应删除的所有键放入一个可以迭代的新列表中.
如果你没有尝试这个代码,ToList()你会得到一个InvalidOperationException:

收集被修改; 枚举操作可能无法执行.

请注意,此代码比当前接受的答案更有效.它只复制需要删除的密钥而不是完整的字典.

  • 这是一个比标记为*答案的答案要好得多的答案...... (3认同)