2010-03-12 7 views
38

ich möchte über die Einzelteile eines List<T>, außer dem ersten Iterieren, die Ordnung konservierend. Gibt es eine elegante Möglichkeit, es mit LINQ mit einer Aussage zu tun:LINQ: Wie man einen überspringt, dann den Rest einer Folge nehmen

foreach (var. Artikel in list.Skip (1) TakeTheRest()) {....

Ich spielte mit TakeWhile herum, war aber nicht erfolgreich. Wahrscheinlich gibt es auch eine andere, einfache Art, es zu tun?

+0

Hmmm, wurde diese Frage nicht gestern gestellt? – leppie

+0

Welche Frage? Würde es Ihnen etwas ausmachen, den Link zur Verfügung zu stellen? – Marcel

Antwort

76

Aus der Dokumentation für Skip:

Umgeht eine festgelegte Anzahl von Elementen in einer Sequenz und gibt dann die übrigen Elemente zurück.

So brauchen Sie nur das:

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

Danke Mann (schlug meinen Kopf gegen die Tastatur, um diese offensichtliche Lösung nicht zu sehen ...) – Marcel

+2

Und wenn Sie eine bestimmte Anzahl von Werten nehmen wollten, würden Sie einfach 'foreach (var Element in list.Skip (1). Take (count)) ' – Pat

9

Just do:

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

Es gibt einige weitere Informationen über die MSDN und ein einfaches Beispiel, das here

5

herunterladbare ist Wäre das nicht es ist ...

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

Das AsEnumerable wird nicht benötigt, da Marks Lösung perfekt funktioniert. – Marcel

+0

Überspringen (1) standardmäßig macht es Enumerable –

+2

Warum hat dies sogar 6 upvotes? –