我知道hashsetA.Except(hashsetB)
要删除hashsetA
中存在的hashsetB
元素。不过,我想删除hashsetA
中不存在的hashsetB
中的元素。
目前我只需将hashsetA
复制到新的Hashset
,然后再使用ExceptWith()
两次:
hashsetC = new HashSet<var>(hashsetA);
hashsetC.ExceptWith(hashsetB);
hashsetA.ExceptWith(hashsetC);
这对我的目的而言足够好,但是我想知道是否有一种内置方法可以让它更快/更简洁? 或者我错过了从集合中选择的明显方法?
答案 0 :(得分:2)
只需使用IntersectWith
method。
hashsetA.IntersectWith(hashsetB);
答案 1 :(得分:1)
res = hashsetA.Where(p=> hashsetB.Contains(p)).
鉴于Hashset中的查找是O(1),它应该总和为O(n)。