在SortedSet<int>
中处理每个项目集(类型为Itemset
,名为SortedSet<Itemset> ItemsetCollection1
)的过程中,会将其添加到另一个集合中,例如ItemsetCollection2
。要求是必须从前者删除已添加到ItemsetCollection2
的那些项目集。我正在使用RemoveWhere
,其谓词检查后一个集合中是否存在itemset并删除。
Itemset i = new Itemset(){1,2};
Itemset j = new Itemset(){2};
Itemset k = new Itemset(){3};
ic1.Add(i);
ic1.Add(j);
ic2.Add(i);
ic2.Add(k);
ic1.RemoveWhere(x => ic2.Any(it => it.Count == x.Count()
&& it.All(ti => x.Any(tti => ti == tti))));
谓词工作正常。但是,项目集的删除失败,即当ic1
中已删除两个集合共有的项集i
时,集合ic1
中仍有两个项集。此外,我尝试使用ExceptWith
,因为这实际上是一个设置差异操作,也是失败的(尽管ExceptWith
适用于Itemset
)。 RemoveWhere
的使用方式有问题吗?有没有有效的方法来实现这一目标?