2010-03-12 22 views
38

Je voudrais parcourir sur les éléments d'un List<T>, sauf le premier, en préservant l'ordre. Y at-il une façon élégante de le faire avec LINQ en utilisant une déclaration comme:LINQ: Comment sauter un, puis prendre le reste d'une séquence

foreach (. Var item dans list.Skip (1) TakeTheRest()) {....

J'ai joué avec TakeWhile, mais je n'ai pas réussi. Probablement il y a aussi une autre façon simple de le faire?

+0

Hmmm, cette question n'a pas été posée hier? – leppie

+0

Quelle question? Pourriez-vous fournir le lien? – Marcel

Répondre

76

De la documentation pour Skip:

Ignore un nombre spécifié d'éléments dans une séquence puis retourne les éléments restants.

Vous avez donc besoin ceci:

foreach (var item in list.Skip(1)) 
+0

Merci homme (se cognant la tête contre le clavier pour ne pas voir cette solution évidente ...) – Marcel

+2

Et si vous vouliez prendre un certain nombre de valeurs, vous feriez simplement 'foreach (var item dans list.Skip (1). Take (count)) ' – Pat

9

Il suffit de faire:

foreach (var item in input.Skip(1)) 

Il y a un peu plus d'informations sur le MSDN et un exemple simple qui est téléchargeable here

5

Ne serait pas ce soit ...

foreach (var in list.Skip(1).AsEnumerable()) 
+1

AsEnumerable n'est pas nécessaire, car la solution de Mark fonctionne parfaitement. – Marcel

+0

Sauter (1) par défaut le rend Enumerable –

+2

Pourquoi cela a-t-il même 6 upvotes? –