Bir diziden ilki hariç tüm öğeleri al


130

İlk eleman hariç her şeyi basit bir diziden almak için tek satırlık kolay bir linq ifadesi var mı?

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

Sadece yoğunlaştırmanın daha kolay olup olmadığını görmek istedim.

Yanıtlar:


244

Evet, Enumerable.Skip istediğinizi yapar:

contents.Skip(1)

Ancak, bir dizi almak istiyorsanız, sonuç bir IEnumerable <T> olur:

contents.Skip(1).ToArray()

contentsDiziyi ArraySegment<>yapının yeni bir örneğine sarmak da mümkündür . Zamanda yukarıdaki cevabı özellikle yararlı değildi, yazılmıştır, ancak .NET 4.5 beri ArraySegment<>uygular IList<>, IReadOnlyList<>ve (dahil kendi baz arayüzleri IEnumerable<>), örneğin bir geçebileceği şekilde ArraySegment<>karşı string.Join.
— Jeppe Stig Nielsen

Linq'ten ne kadar nefret etsem de, bunu tolere edebileceğime karar verdim, çünkü her uygulama önyüklemesi için bir statik kurucuda çalıştırılıyor, bu yüzden performans ek yükü yok.
— Krythic

7

Aşağıdakiler döngünüze eşdeğer olacaktır for:

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

1
İstediğiniz vermedi var item??
— Joe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.