Dapatkan semua elemen kecuali yang pertama dari sebuah array

130

Apakah ada ekspresi linq satu-baris yang mudah untuk mendapatkan semuanya dari array sederhana kecuali elemen pertama?

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

Saya hanya ingin melihat apakah lebih mudah mengembun.

Ciel
sumber

Jawaban:

244

Ya, Enumerable . Skip melakukan apa yang Anda inginkan:

contents.Skip(1)

Namun, hasilnya adalah IEnumerable <T>, jika Anda ingin mendapatkan penggunaan array:

contents.Skip(1).ToArray()
LBushkin
sumber
Dimungkinkan juga untuk membungkus contentsarray dalam instance baru dari ArraySegment<>struct. Pada saat jawaban di atas ditulis, itu tidak terlalu berguna, tetapi sejak .NET 4.5 ArraySegment<>mengimplementasikannya IList<>, IReadOnlyList<>dan antarmuka dasarnya (termasuk IEnumerable<>), jadi Anda dapat, misalnya, meneruskan ArraySegment<>ke string.Join.
Jeppe Stig Nielsen
Sebanyak yang saya benci Linq, saya memutuskan saya bisa mentolerir ini, hanya karena sedang dijalankan di konstruktor statis, sekali per boot aplikasi, sehingga overhead kinerja tidak ada.
Krythic
7

Berikut ini akan setara dengan forloop Anda :

foreach (var item in contents.Skip(1))
    Message += item;
Dan Stevens
sumber
1
apakah kamu mau var item??
Joe