Récupère tous les éléments sauf le premier d'un tableau

130

Existe-t-il une expression linq simple sur une ligne pour tout obtenir à partir d'un simple tableau, sauf le premier élément?

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

Je voulais juste voir si c'était plus facile à condenser.

Ciel
la source

Réponses:

244

Oui, Enumerable.Skip fait ce que vous voulez:

contents.Skip(1)

Cependant, le résultat est un IEnumerable <T>, si vous souhaitez obtenir un tableau, utilisez:

contents.Skip(1).ToArray()
LBushkin
la source
Il est également possible d'encapsuler le contentstableau dans une nouvelle instance de la ArraySegment<>structure. Au moment où la réponse ci-dessus a été écrite, ce n'était pas particulièrement utile, mais depuis .NET 4.5 les ArraySegment<>implémentations IList<>, IReadOnlyList<>et leurs interfaces de base (y compris IEnumerable<>), vous pouvez par exemple passer un ArraySegment<>à string.Join.
Jeppe Stig Nielsen
Autant je déteste Linq, j'ai décidé que je pouvais tolérer cela, uniquement parce qu'il était exécuté dans un constructeur statique, une fois par démarrage d'application, donc la surcharge de performance est inexistante.
Krythic
7

Ce qui suit serait équivalent à votre forboucle:

foreach (var item in contents.Skip(1))
    Message += item;
Dan Stevens
la source
1
vouliez-vous var item??
Joe le