2012-09-16 20 views
18

如何比較多維數組?只是真/假。如何比較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); 

有沒有辦法比較二維數組像一維數組?

data1.SequenceEqual(data2);  

我必須每一秒,所以最簡單的方法將是巨大的比較。非常感謝。

回答

21

多維數組可以在linq中用作一維可枚舉。你只需要檢查所有尺寸的長度。該片段應足夠:

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

*大*的答案。 – Daniel

+0

@ user287107是的,正是我要找的!非常感謝! –

-3

你可以做到這一點

data1.SequenceEqual(data2); 
+2

多維數組不包含'SequenceEqual'的定義。我相信這就是爲什麼作者正在尋找他的問題的答案。 – rusxg