确定.NET中两个IEnumerable <t>集的相对补集</t>

时间:2010-06-02 19:00:00

标签: c# .net vb.net linq set

有两种简单方法可以获得两组relative complement吗?也许使用LINQ?

我必须找到集合A相对于B的相对称赞.A和B都是HashSet<T>类型,但我认为算法可以更通用(IEnumerable<T>甚至{{ 1}})?

我可以在VB.NET或C#中使用解决方案。

1 个答案:

答案 0 :(得分:27)

您是否尝试过 Enumerable.Except

setB.Except(setA)

示例:

HashSet<int> setB = new HashSet<int> { 1, 2, 3, 4, 5 };
HashSet<int> setA = new HashSet<int> { 1, 3, 5, 7 };
HashSet<int> result = new HashSet<int>(setB.Except(setA));

foreach (int x in result)
    Console.WriteLine(x);

结果:

2
4