3

我正试图以最有效的方式从另一组中拿走一组。因此,如果我有以下集合 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);
}
4

3 回答 3

10

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

HashSet<int> A_minus_B = new HashSet<int>(A.Except(B)); 
于 2013-04-17T18:08:18.480 回答
2

用这个 :

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

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

remaining是您的新过滤集。

于 2013-04-17T18:09:55.847 回答
1

您可以使用exceptWith,它将A通过删除以下项目进行修改B

A.ExceptWith(B);

您也可以使用Exceptwhich 将返回新集合;

于 2013-04-17T18:09:09.747 回答