使用LINQ,如果列表中没有项目键,有没有办法从字典中删除所有项目?
就像这篇文章的回答一样,我这样做:
var keys = dict.Where(kvp => !list.Contains(kvp.Key)).ToList();
foreach(va key in keys){dict.Remove(k);}
我很想找到另一种方法来做到这一点......
答案 0 :(得分:7)
foreach(var key in dict.Keys.Except(list).ToList())
{
dict.Remove(key);
}
答案 1 :(得分:1)
诀窍是你无法遍历字典;你必须首先得到一个键列表,否则foreach
循环将失败:
var keys = dict.Where(kvp => !list.Contains(kvp.Key)).ToList();
foreach(var key in keys)
{
dict.Remove(key);
}