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.

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()

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;

1
wolltest du var item??
Joe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.