<分区>
Possible Duplicate:
Getting the “diff” between two arrays in 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
<分区>
Possible Duplicate:
Getting the “diff” between two arrays in 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
最佳答案
您正在寻找 symmetric-difference ,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
关于c# - 找到两个数组之间差异的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928532/