2017-03-24 2 views
1

Ok, ich habe 2 gezackte Arrays, ich möchte sie durchlaufen und jedes Array mit jedem Array in der anderen gezackten Array vergleichen. Also in diesem Beispiel möchte ich True zurückgeben, wenn Zugriff [1] == Visual [0].Wie kann ich Arrays in zwei gezackten Arrays vergleichen C#

Aber es scheint, dass ich Arrays in den gezackten Arrays nicht explizit vergleichen kann. Wie kann ich die Arrays als Ganzes und nicht nur die Elemente innerhalb dieser Arrays referenzieren? Damit meine ich, wenn ich schreibe access[0][0] werde ich "10" bekommen. Aber ich kann nicht access[0] schreiben "10","16"

string[][] access = new string[][] { 
        new string[] {"10","16"}, 
        new string[] {"100","20"}, 
        new string[] {"1010","2"}, 
        new string[] {"1011","1"} 
       }; 

string[][] visual = new string[][] { 
       new string[] {"100","20"}, 
       new string[] {"101","36"}, 
       new string[] {"101","37"}, 
       new string[] {"101","38"} 
      }; 
+1

Ihr Problem besteht das gleiche Niveau an: Sie direkt zwei 'string [] nicht vergleichen kann' Arrays ... Sie haben sie durch das Element Element vergleichen ... – xanatos

+1

Und * Aber ich kann nicht schreiben access [0], um "10", "16" * ... zu erhalten. In der gleichen Weise kann man mit einem eindimensionalen Array 'string [] access = {" 10, 16 "' 'nicht' access' schreiben Holen Sie sich "10", "16" ' – xanatos

Antwort

3

zu bekommen, aber ich kann nicht Schreibzugriff [0] "10" zu bekommen "16"

Sie können. Aber um die Elemente zu vergleichen, müssen Sie Enumerable.SequenceEqual verwenden.

if (Enumerable.SequenceEqual(access[1], visual[0])) { ... } 
+0

Perfekter Dank! – Azuraith

+0

Gibt es eine Idee, wie man das Array bei 'access [i]' löscht, sobald eine Übereinstimmung gefunden wurde? – Azuraith

+1

Ich würde eine 'List ' anstelle von 'string [] []' verwenden, die Ihnen Zugriff auf ['List.RemoveAt'] (https://msdn.microsoft.com/en-us/library/5cw9x18z (v = vs.110) .aspx). –