我在使用以下代码时遇到了一些问题:
AllAgents.CollectionChanged += (sender, e) =>
{
if (e.Action != NotifyCollectionChangedAction.Remove) return;
foreach (var s in AllSnapshots)
{
foreach (var stat in s.Stats.Where(stat => stat.Model.Agent == null))
s.Stats.Remove(stat);
}
};
这当然会抛出“集合已修改;枚举操作可能无法执行”。例外,这对我来说完全有意义。问题是,从我的 ObservableCollection 中删除 Model.Agent 属性为空的所有项目的最佳方法是什么?我也对其他解决方案持开放态度,本质上,当从 AllAgents 集合中删除代理时,我需要从我的 AllSnapshots.Stats 集合中删除引用该代理的所有条目。