我有一个字典,其中的项目是(例如):
- “A”, 4
- “乙”,44
- “再见”,56
- “C”,99
- “D”,46
- "6672", 0
我有一个列表:
- “一个”
- “C”
- “D”
我想从我的字典中删除所有键不在我的列表中的元素,最后我的字典将是:
- “A”, 4
- “C”,99
- “D”,46
我该怎么办?
最佳答案
构造新的 Dictionary 以包含列表中的元素更简单:
List<string> keysToInclude = new List<string> {"A", "B", "C"};
var newDict = myDictionary
.Where(kvp=>keysToInclude.Contains(kvp.Key))
.ToDictionary(kvp=>kvp.Key, kvp=>kvp.Value);
如果修改现有字典很重要(例如,它是某个类的只读属性)
var keysToRemove = myDictionary.Keys.Except(keysToInclude).ToList();
foreach (var key in keysToRemove)
myDictionary.Remove(key);
注意 ToList() 调用 - 实现要删除的键列表很重要。如果您尝试在未具体化 keysToRemove
的情况下运行代码,您可能会遇到异常,指出类似“集合已更改”的内容。
关于c# - 从 Dictionary<Key, Item> 中移除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13552898/