比较两个int数组并打印出差异

时间:2018-07-10 18:54:46

标签: c#

  

重复问题。

我正在尝试比较两个要查找它们之间差异的int数组。顺序并不重要,每个数组本身不会重复。例如,我有:

int[] arr1 = new int[] { 45, 26, 55, 99, 36 };
int[] arr2 = new int[] { 45, 26, 99, 20, 36 };

我希望得到{20,55}。

2 个答案:

答案 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);

c# online

相关问题