La sélection d'éléments de la matrice selon les indices spécifiés dans un autre tableau c#

Supposons que nous avons un tableau avec des données:

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

Et tableau de taille N contenant les étiquettes correspondant aux éléments de x:

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

Quel est le moyen le plus rapide pour sélectionner tous les éléments de x qui ont certaines étiquette I selon ind?

Par exemple,

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

Résultat:

y = {3, 6, 2}

Clairement, il peut être facilement (mais pas de manière efficace et propre) fait avec des boucles, mais je pense qu'il devrait être la façon de le faire à l'aide .Where et les lambdas..Merci

EDIT:

La réponse fournie par MarcinJuraszek est tout à fait correct, merci. Cependant, j'ai simplifié la question dans l'espoir qu'il serait de travailler dans ma situation d'origine. Pourriez vous s'il vous plaît prendre un coup d'oeil quel est le problème si nous avons des types génériques:

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

À l'aide de la solution fournie, j'obtiens une erreur "Délégué" du Système.Func "ne prenez pas 2 arguments":

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

Merci beaucoup

OriginalL'auteur Oleg Shirokikh | 2013-04-03