2010-11-12 11 views
1

Est-il possible d'obtenir des objets d'une liste en fonction de leurs index en une fois? Par exemple, j'ai un List<string> alist. J'ai un nombre entier Liste List<int> indexes qui a des index. Est-il possible d'obtenir une liste de résultats de la liste d'origine qui est égale aux index dans le tableau.Expression lambda pour obtenir des éléments de la liste en fonction des index

Je cherche quelque chose comme List<string> resultlist = alist.GetItems(items.indexin(indexes)) (c'est juste mon imagination, pas la syntaxe désolé réelle)

Répondre

4

Quelque chose comme cela devrait fonctionner:

var result = indexes.Select(i => alist[i]).ToList(); 

Bien sûr, je vous recommande de faire un un peu plus robuste.

+0

@ vous ChaosPandion-merci. – Jimmy

1
var result = alist.Where((theString, theIndex) => indexes.Contains(theIndex)); 
+0

C'est un peu plus lisible, merci – Jimmy

+0

@Jimmy, Maintenant que j'y pense, la solution de @ ChaosPandion sera plus performante ou (dans le pire des cas) tout aussi bonne, alors vas-y plutôt (à moins que, pour une raison quelconque, les index liste est plus longue que la liste des chaînes). –

+0

c'est ce que je pensais aussi. Cette expression peut accéder directement à la liste des chaînes par index. – Jimmy

0
indexes.Select<int, string>(i => alist[i]).ToList<string>();