2012-09-16 10 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); 

1dアレイのような2dアレイを比較する方法はありますか?

data1.SequenceEqual(data2);  

私は毎秒を比較する必要があるので、最も簡単な方法は素晴らしいでしょう。どうもありがとう。

答えて

21

多次元配列は、linqで1次元の列挙型として使用できます。すべての寸法の長さもチェックするだけです。このスニペットは十分なはずです:

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