c# - 从 Dictionary<Key, Item> 中移除元素

标签 c# list collections dictionary

我有一个字典,其中的项目是(例如):

  1. “A”, 4
  2. “乙”,44
  3. “再见”,56
  4. “C”,99
  5. “D”,46
  6. "6672", 0

我有一个列表:

  1. “一个”
  2. “C”
  3. “D”

我想从我的字典中删除所有键在我的列表中的元素,最后我的字典将是:

  1. “A”, 4
  2. “C”,99
  3. “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/

相关文章:

c# - 自定义枚举器的需要点

c# - AsQueryable() 在内部是如何工作的?

c# - 如何通过字典打印列表的内容?

java - java 是否具有相当于 mysql 的数组列表限制和偏移量?

arrays - Laravel 集合 - 返回对象数组

grails - Grails GORM系列

javascript - 如何在 javascript 中将 json 对象发送到 asp.net?

c# - 开始收到错误: Error signing assembly -- Unknown error (8013141c)

c# - 如果选择的值为空,如何让我的 Linq 选择返回值?

c# - C#动态创建Type数组