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.