有条件地从SortedSet中删除元素<sortedset <int>&gt;

时间:2018-04-02 14:24:47

标签: c#

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的使用方式有问题吗?有没有有效的方法来实现这一目标?

0 个答案:

没有答案