设置A减去设置B.

时间:2013-04-17 18:07:14

标签: c# .net set

我试图以最有效的方式从另一套中拿走一套。因此,如果我有以下集合A和B,那么A_minus_B应该给出{1,2,6}。这是我所拥有的,虽然我确信它不是最有效的方式。

HashSet<int> A = new HashSet<int>{ 1, 2, 3, 4, 5, 6 };
HashSet<int> B = new HashSet<int> { 3, 4, 5 };

HashSet<int> A_minus_B = new HashSet<int>(A);

foreach(int n in A){
    if(B.Contains(n)) A_minus_B.Remove(n);
}

3 个答案:

答案 0 :(得分:7)

您可以使用Except()方法。这是代码:

HashSet<int> A_minus_B = new HashSet<int>(A.Except(B)); 

答案 1 :(得分:2)

使用此:

var setA= new HashSet<int>();
var setB= new HashSet<int>();
...

var remaining = new HashSet<int>(setA);
remaining.ExceptWith(setB);

remaining是您新的过滤集。

答案 2 :(得分:1)

您可以使用ExceptWith,它会删除A中的项目来修改B

A.ExceptWith(B);

您还可以使用Except来返回新的设置;