Pobierz wszystkie elementy oprócz pierwszego z tablicy

132

Czy istnieje jednowierszowe wyrażenie easy linq, które po prostu pobiera wszystko z prostej tablicy oprócz pierwszego elementu?

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

Chciałem tylko sprawdzić, czy łatwiej jest skondensować.

Ciel
źródło

Odpowiedzi:

248

Tak, Enumerable. Skip robi to, co chcesz:

contents.Skip(1)

Jednak wynik jest IEnumerable <T>, jeśli chcesz uzyskać tablicę użyj:

contents.Skip(1).ToArray()
LBushkin
źródło
Możliwe jest również zawinięcie contentstablicy w nowe wystąpienie ArraySegment<>struktury. W czasie powyższego odpowiedź było napisane, że nie był szczególnie przydatny, ale ponieważ .NET 4.5 ArraySegment<>narzędzi IList<>, IReadOnlyList<>oraz ich interfejsów bazowych (włącznie IEnumerable<>), dzięki czemu można na przykład przekazać ArraySegment<>do string.Join.
Jeppe Stig Nielsen
Chociaż nienawidzę Linqa, zdecydowałem, że mogę to tolerować, tylko dlatego, że jest uruchamiany w konstruktorze statycznym, raz na rozruch aplikacji, więc narzut wydajności nie istnieje.
Krythic
7

Poniższe byłoby odpowiednikiem twojej forpętli:

foreach (var item in contents.Skip(1))
    Message += item;
Dan Stevens
źródło
1
czy chciałeś var item??
Joe