有没有一种简单的方法可以得到两组的 relative complement?也许使用LINQ?

我必须找到集合 A 相对于 B 的相对互补。 A 和 B 都是 HashSet<T> 类型,但我认为该算法可以更通用( IEnumerable<T> 甚至 ISet<T> )?

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

最佳答案

你试过 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

关于c# - 确定 .NET 中两个 IEnumerable<T> 集的相对补码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2960722/

10-13 06:26