2012-09-16 13 views
18

Come confrontare gli array multidimensionali? Solo vero/falso.Come confrontare gli array multidimensionali in 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); 

C'è un modo per confrontare gli array 2d come l'array 1d?

data1.SequenceEqual(data2);  

Devo confrontare ogni secondo, quindi il modo più semplice sarà grande. Molte grazie.

risposta

21

Un array multidimensionale può essere utilizzato in linq come enumerabile in una dimensione. Hai solo bisogno di controllare anche la lunghezza di tutte le dimensioni. Questo frammento di codice dovrebbe essere sufficiente:

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

* Grande * risposta. – Daniel

+0

@ user287107 Sì, esattamente quello che sto cercando! Molte grazie! –

-3

Si può fare questo

data1.SequenceEqual(data2); 
+2

Gli array multidimensionali non contengono una definizione per "SequenceEqual". Credo che sia questa la ragione per cui l'autore stava cercando la risposta alla sua domanda. – rusxg

Problemi correlati