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.

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

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;

1
apakah kamu mau var item??
— Joe
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.