从一个Hashset中删除不在另一个Hashset中的元素?

时间:2015-08-22 11:31:25

标签: c# hashset

我知道hashsetA.Except(hashsetB)要删除hashsetA中存在的hashsetB元素。不过,我想删除hashsetA存在的hashsetB中的元素。

目前我只需将hashsetA复制到新的Hashset,然后再使用ExceptWith()两次:

hashsetC = new HashSet<var>(hashsetA);
hashsetC.ExceptWith(hashsetB);
hashsetA.ExceptWith(hashsetC);

这对我的目的而言足够好,但是我想知道是否有一种内置方法可以让它更快/更简洁? 或者我错过了从集合中选择的明显方法?

2 个答案:

答案 0 :(得分:2)

只需使用IntersectWith method

hashsetA.IntersectWith(hashsetB);

答案 1 :(得分:1)

res = hashsetA.Where(p=> hashsetB.Contains(p)). 

鉴于Hashset中的查找是O(1),它应该总和为O(n)。