Die Auswahl von Elementen aus dem array nach Indizes angegeben, die in einem anderen array c#

Angenommen wir haben ein array mit Daten:

double[] x = new double[N] {x_1, ..., x_N};

Array der Größe N mit Etiketten entsprechend der Elemente der x:

int[] ind = new int[N] {i_1, ..., i_N};

Was ist der Schnellste Weg, um wählen Sie alle Elemente aus x bestimmten label I nach ind?

Beispielsweise

x = {3, 2, 6, 2, 5}
ind = {1, 2, 1, 1, 2}
I = ind[0] = 1

Ergebnis:

y = {3, 6, 2}

Klar, es kann leicht sein (aber nicht effizient und sauber) gemacht mit Schleifen, aber ich denke, es sollte die Art und Weise, wie zu tun, dass die Verwendung .Where und lambdas..Danke

EDIT:

Die Antwort MarcinJuraszek ist völlig richtig, vielen Dank. Allerdings habe ich vereinfacht, die Frage in der Hoffnung, dass es funktionieren würde, in meine ursprüngliche Lage. Könnten Sie bitte schauen, was ist das problem, wenn wir generische Typen:

T1[] xn = new T1[N] {x_1, ..., x_N};
T2[] ind = new T2[N] {i_1, ..., i_N};
T2 I = ind[0]

Mit der Lösung bekomme ich die Fehlermeldung "Delegat" System.Func "nicht 2 Argumente":

T1[] y = xn.Where((x, idx) => ind[idx] == I).ToArray();

Vielen Dank

Schreibe einen Kommentar