如何在C#中比较多维数组?

如何比较多维数组? 只是真/假。

double[,] data1 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; double[,] data2 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; //bool compare = data1.SequenceEqual(data2); 

有没有办法比较2d数组像1d数组?

 data1.SequenceEqual(data2); 

我必须比较每一秒,所以最简单的方法将是伟大的。 非常感谢。

多维数组可以在linq中用作一维可枚举。 您只需要检查所有尺寸的长度。 这个片段应该足够了:

 var equal = data1.Rank == data2.Rank && Enumerable.Range(0,data1.Rank).All(dimension => data1.GetLength(dimension) == data2.GetLength(dimension)) && data1.Cast().SequenceEqual(data2.Cast()); 

您可以使用.Cast多维数组

 Console.WriteLine("2D Array"); String[,] array2d = new String[,] { { "A1", "B1" }, { "A2", "B2" } }; foreach(var s in array2d.Cast()) Console.Write(s + ", "); Console.WriteLine("\r\n3D Array"); String[,] array3d = new String[,] { { "A1", "B1", "C1" }, { "A2", "B2", "C1" } }; foreach (var s in array3d.Cast()) Console.Write(s + ", "); 

产量

 2D Array A1, B1, A2, B2, 3D Array A1, B1, C1, A2, B2, C1, 

你可以这样做

 data1.SequenceEqual(data2);