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.

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

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;

1
vouliez-vous var item??
Joe le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.