Ottieni tutti gli elementi tranne il primo da un array


130

Esiste un'espressione linq semplice su una riga per ottenere tutto da un array semplice tranne il primo elemento?

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

Volevo solo vedere se era più facile condensare.

Risposte:


244

Sì, Enumerable.Skip fa quello che vuoi:

contents.Skip(1)

Tuttavia, il risultato è un IEnumerable <T>, se si desidera ottenere un array utilizzare:

contents.Skip(1).ToArray()

È anche possibile avvolgere l' contentsarray in una nuova istanza della ArraySegment<>struttura. Al momento la risposta di cui sopra è stato scritto, che non era particolarmente utile, ma dal momento che .NET 4.5 le ArraySegment<>attrezzi IList<>, IReadOnlyList<>e le loro interfacce di base (compresa IEnumerable<>), in modo da poter, ad esempio passare un ArraySegment<>a string.Join.
Jeppe Stig Nielsen,

Per quanto odio Linq, ho deciso di tollerarlo, solo perché viene eseguito in un costruttore statico, una volta per avvio dell'applicazione, quindi l'overhead delle prestazioni è inesistente.
Krythic,

7

Quanto segue sarebbe equivalente al tuo forloop:

foreach (var item in contents.Skip(1))
    Message += item;

1
volevi var item??
Joe
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.