Holen Sie sich alle Elemente außer dem ersten aus einem Array

128

Gibt es einen einzeiligen einfachen Linq-Ausdruck, mit dem nur alles aus einem einfachen Array mit Ausnahme des ersten Elements abgerufen werden kann?

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

Ich wollte nur sehen, ob es einfacher ist, zu verdichten.

Ciel
quelle

Antworten:

242

Ja, Enumerable.Skip macht, was Sie wollen:

contents.Skip(1)

Das Ergebnis ist jedoch eine IEnumerable <T>, wenn Sie ein Array verwenden möchten:

contents.Skip(1).ToArray()
LBushkin
quelle
Es ist auch möglich, das contentsArray in eine neue Instanz der ArraySegment<>Struktur zu verpacken . Zu der Zeit wurde die obige Antwort geschrieben, die nicht besonders nützlich war, aber seit .NET 4.5 die ArraySegment<>Geräte IList<>, IReadOnlyList<>und deren Basis - Interfaces (einschließlich IEnumerable<>), so können Sie beispielsweise ein Pass ArraySegment<>an string.Join.
Jeppe Stig Nielsen
So sehr ich Linq hasse, habe ich beschlossen, dies zu tolerieren, nur weil es einmal pro Anwendungsstart in einem statischen Konstruktor ausgeführt wird, sodass der Leistungsaufwand nicht vorhanden ist.
Krythic
7

Folgendes würde Ihrer forSchleife entsprechen:

foreach (var item in contents.Skip(1))
    Message += item;
Dan Stevens
quelle
1
wolltest du var item??
Joe