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ć.

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

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;

1
czy chciałeś var item??
Joe
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.