找到两个数组之间差异的更好方法

MrC*_*coo 10 c# linq arrays

可能重复:
在C#中获取两个数组之间的"差异"?

有没有更好的方法来获得两个数组的差异?

var a = new int[] { 1, 2, 3 };
var b = new int[] { 2, 3, 4 };

foreach (var d in a.Except(b).Union(b.Except(a)))
    Console.WriteLine(d); // 1 4
Run Code Online (Sandbox Code Playgroud)

Ani*_*Ani 9

您正在寻找 对称差异,LINQ to Objects尚未拥有的运算符(从.NET 4.0开始).你完成它的方式非常好 - 尽管你可能想要考虑将这个位提取出来自己的方法.

然而,使用该HashSet<T>.SymmetricExceptWith方法的更有效的方法是实现这一点.

var result = new HashSet<int>(a);
result.SymmetricExceptWith(b);

foreach (var d in result)
   Console.WriteLine(d); // 1 4
Run Code Online (Sandbox Code Playgroud)


Yah*_*hia 5

尝试

a.Union(b).Except(a.Intersect(b))
Run Code Online (Sandbox Code Playgroud)