C# 比较两个数组中的内容是否相同的算法

这里要比较的是两个数组中的内容是否相同,以int数组为例

以下示例返回false 因为是比较相同索引的值

int[] Arraya = new[] { 1, 2, 3, 4, 5 };

int[] Arrayb = new[] { 5, 3, 2, 1, 4 };

以上两个数组内的值是相同的,都是1,2,3,4,5.具体的算法如下。

第一种就是最原始的方法,使用循环。

public static bool compareArr(int[] Arraya,int[] Arrayb){

bool areEqual = true;

            if (Arraya.Length != Arrayb.Length)
            {
                areEqual = false;
            }
            else
            {
                for (int i = 0; i < Arraya.Length; i++)
                {
                    if (Arraya[i] != Arrayb[i])
                    {
                        areEqual = false;
                        break;
                    }
                }
            }

            if (areEqual)
            {
                Console.WriteLine("两个数组的内容相同");
            }
            else
            {
                Console.WriteLine("两个数组的内容不同");
            }

}

第二种方法可以借助Linq查询来比较。

using System.Linq;

public static bool compareArr(int[] arr1, int[] arr2)

        {

            var q = from a in arr1 join b in arr2 on a equals b select a;

            bool flag = arr1.Length == arr2.Length && q.Count() == arr1.Length;

            return flag;//内容相同返回true,反之返回false。

        }

第三种

int[] Arraya = new[] { 1, 2, 3, 4, 5 };
        int[] Arrayb = new[] { 5, 3, 2, 1, 4 };

        bool areEqual = Arraya.SequenceEqual(Arrayb);

        if (areEqual)
        {
            Console.WriteLine("两个数组的内容相同");
        }
        else
        {
            Console.WriteLine("两个数组的内容不同");
        }