Obtenga todos los elementos menos el primero de una matriz

130

¿Existe una expresión linq fácil de una línea para obtener todo de una matriz simple, excepto el primer elemento?

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

Solo quería ver si era más fácil condensar.

Ciel
fuente

Respuestas:

244

Sí, Enumerable.Skip hace lo que quieres:

contents.Skip(1)

Sin embargo, el resultado es un IEnumerable <T>, si desea obtener un uso de matriz:

contents.Skip(1).ToArray()
LBushkin
fuente
También es posible ajustar la contentsmatriz en una nueva instancia de la ArraySegment<>estructura. En el momento de escribir la respuesta anterior, que no era particularmente útil, pero desde .NET 4.5 los ArraySegment<>implementos IList<>, IReadOnlyList<>y sus interfaces base (incluidos IEnumerable<>), por lo que puede por ejemplo pasar una ArraySegment<>a string.Join.
Jeppe Stig Nielsen
Por mucho que odie a Linq, decidí que puedo tolerar esto, solo porque se ejecuta en un constructor estático, una vez por inicio de la aplicación, por lo que la sobrecarga de rendimiento no existe.
Krythic
7

Lo siguiente sería equivalente a su forciclo:

foreach (var item in contents.Skip(1))
    Message += item;
Dan Stevens
fuente
1
quieres var item??
Joe