重复问题。
我正在尝试比较两个要查找它们之间差异的int数组。顺序并不重要,每个数组本身不会重复。例如,我有:
int[] arr1 = new int[] { 45, 26, 55, 99, 36 };
int[] arr2 = new int[] { 45, 26, 99, 20, 36 };
我希望得到{20,55}。
答案 0 :(得分:0)
您当前正在将arr1
中的每个元素与arr2
中的每个元素进行比较。您想通过外观将它们成对比较。 (尽管这个问题还不太清楚。)
如果您想要只使用语言的简单方面的代码,则可以像这样简单地做到这一点:
// TODO: Check that arr1.Length and arr2.Length are the same
for (int i = 0; i < arr1.Length; i++)
{
if (arr1[i] != arr2[i])
{
Console.WriteLine("Difference at element {0}: {1} != {2}", i, arr1[i], arr2[i]);
}
}
使用LINQ,您可以改为使用Zip
(以及元组和内插的字符串文字...):
var differences = arr1.Zip(arr2, (x, y) => (x, y))
.Where(p => p.x != p.y);
foreach (var pair in differences)
{
// We don't have the index at this point
Console.WriteLine($"{pair.x} != {pair.y}");
}
答案 1 :(得分:-1)
您可以尝试使用linq Except
来区别于两个数组,然后使用Union
组合两个数组。
var result1 = arr2.Except(arr1);
var result2 = arr1.Except(arr2);
var result = result1.Union(result2);