2012-09-16 36 views
18

¿Cómo comparar matrices multidimensionales? Solo verdadero/falso.¿Cómo comparar matrices multidimensionales en 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); 

¿Hay alguna forma de comparar arreglos en 2d como 1d array?

data1.SequenceEqual(data2);  

Tengo que comparar cada segundo, así que la manera más fácil será genial. Muchas gracias.

Respuesta

21

Una matriz multidimensional se puede utilizar en linq como enumerable unidimensional. Solo necesita verificar la longitud de todas las dimensiones. Este fragmento de código debería ser suficiente:

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

* * Gran respuesta. – Daniel

+0

@ user287107 Sí, ¡exactamente lo que estoy buscando! ¡Muchas gracias! –

-3

Usted puede hacer esto

data1.SequenceEqual(data2); 
+2

Las matrices multidimensionales no contienen una definición para 'SequenceEqual'. Creo que esa es la razón por la cual el autor estaba buscando la respuesta a su pregunta. – rusxg

Cuestiones relacionadas