2016-12-27 6 views
1

Wie kann ich die Werte dieser Arrays mit demselben Index vergleichen?Übereinstimmungswerte von 2 Arrays mit gleichem Index

int[] array = { 4, 4, 4, 0 }; 
int[] array1 = { 1, 2, 4, 0 }; 

ich will "4" von "Array" entsprechen - mit demselben Index

I die gleichen Werte versuchte Index 2 mit "4" von "array1" mit

passenden
int i, j = 4; 
bool match = (array.Contains(i) && array1.Contains(j)); 
Vergleichen Indizes

und dann

int index = Array.IndexOf(array, i); 
int index1 = Array.IndexOf(array1, j); 

aber schlägt fehl, da Index == 0 und index1 == 2

+0

möchten Sie überprüfen? – Sajeetharan

+0

Können Sie bitte klarstellen, welches Ergebnis Sie von Ihren Beispiel-Arrays erwarten? Oder sogar von einfacheren [1], [2] Paar Arrays? –

Antwort

1

Verwenden Sie array.Zip(array1). Dies ergibt eine Menge von Tupeln.

3

LINQ ist dein Freund hier. Sie können einen overload Aufruf von Select() verwenden, um ein anonymes Objekt zu erstellen, das jeden Array-Wert sowie seinen entsprechenden Index enthält. Sobald Sie diese Sammlung von Schlüssel/Wert-Paaren haben, ist die Lösung ziemlich einfach.

var matches = array1.Select((value, index) => new { Index = index, Value = value}) 
        .Where(x => x.Value == array2[x.Index]) 
        .Select(x => x.Value); 
+0

geben Sie das Schlüssel/Wert-Paar zurück. nicht nur der Wert. Weil dir das OP-Beispiel '{4, 0}' gegeben hat, aber du wirst nicht wissen, welche 4 übereinstimmen. Also mach einfach eine Liste nach dem wo. – Nkosi

+0

Korrekt, wenn Sie die spezifische Instanz einer übereinstimmenden Zahl kennen müssen, müssen Sie auf die letzte "Select" -Klausel verzichten, damit Sie Zugriff auf den Index haben. – lumberjack4

Verwandte Themen