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.