2010-04-09 6 views
100

Gibt es einen einzeiligen einfachen linq-Ausdruck, um einfach alles von einem einfachen Array mit Ausnahme des ersten Elements zu erhalten?Alle Elemente außer dem ersten von einem Array abrufen

for (int i = 1; i <= contents.Length - 1; i++) 
    Message += contents[i]; 

Ich wollte nur sehen, ob es leichter zu kondensieren war.

Antwort

181

Ja, Enumerable.Skip tut, was Sie wollen:

contents.Skip(1) 

jedoch das Ergebnis ist ein IEnumerable < T>, wenn Sie ein Array verwenden zu wollen:

contents.Skip(1).ToArray() 
+0

Es ist auch möglich, die 'Inhalte' zu ​​verpacken y in einer neuen Instanz des 'ArraySegment <>' struct. Zu der Zeit, als die obige Antwort geschrieben wurde, war das nicht besonders nützlich, aber seit .NET 4.5 implementiert das 'ArraySegment <>' IList <> ',' IReadOnlyList <> 'und ihre Basisschnittstellen (einschließlich 'IEnumerable <>') , so können Sie beispielsweise ein 'ArraySegment <>' an ​​'string.Join' übergeben. –

+0

So sehr ich Linq hasse, entschied ich, dass ich das tolerieren kann, nur weil es in einem statischen Konstruktor ausgeführt wird, einmal pro Anwendungsstart, so dass der Leistungsaufwand nicht vorhanden ist. – Krythic

6

Die folgende wäre äquivalent zu Ihrer for Schleife:

foreach (var item in contents.Skip(1)) 
    Message += item; 
+1

willst du _'var item'_ ?? – Joe

Verwandte Themen