删除List中的数据,其中键不存在于List中

时间:2014-02-06 16:14:57

标签: c# linq

使用LINQ,如果列表中没有项目键,有没有办法从字典中删除所有项目?

就像这篇文章的回答一样,我这样做:

var keys = dict.Where(kvp => !list.Contains(kvp.Key)).ToList();


foreach(va key in keys){dict.Remove(k);}

我很想找到另一种方法来做到这一点......

2 个答案:

答案 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);
}