我有一个 C# 字典,Dictionary<Guid, MyObject>
我需要根据 MyObject
的属性进行过滤.
例如,我想从字典中删除所有MyObject.BooleanProperty = false
的记录.实现这一目标的最佳方式是什么?
最佳答案
如果您不关心用所需项目创建新字典并丢弃旧字典,只需尝试:
dic = dic.Where(i => i.Value.BooleanProperty)
.ToDictionary(i => i.Key, i => i.Value);
如果你不能创建一个新的字典并且由于某种原因需要改变旧的(比如当它被外部引用并且你不能更新所有的引用时:
foreach (var item in dic.Where(item => !item.Value.BooleanProperty).ToList())
dic.Remove(item.Key);
请注意,ToList
在这里是必需的,因为您正在修改基础集合。如果更改基础集合,则在其上工作以查询值的枚举器将无法使用,并将在下一次循环迭代中抛出异常。 ToList
在完全改变字典之前缓存值。
关于c# - 从 C# 通用字典中过滤掉值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2131648/