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.

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

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;

1
quieres var item??
Joe
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.