Obter todos os elementos, exceto o primeiro de uma matriz

130

Existe uma expressão linq fácil de uma linha para obter tudo de uma matriz simples, exceto o primeiro elemento?

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

Eu só queria ver se era mais fácil condensar.

Ciel
fonte

Respostas:

244

Sim, Enumerable.Skip faz o que você deseja:

contents.Skip(1)

No entanto, o resultado é um IEnumerable <T>, se você deseja obter uma matriz, use:

contents.Skip(1).ToArray()
LBushkin
fonte
Também é possível agrupar a contentsmatriz em uma nova instância da ArraySegment<>estrutura. Na época, a resposta acima foi escrito, que não foi particularmente útil, mas desde que .NET 4.5 os ArraySegment<>implementos IList<>, IReadOnlyList<>e suas interfaces de base (incluindo IEnumerable<>), para que você possa, por exemplo, passar um ArraySegment<>para string.Join.
Jeppe Stig Nielsen
Por mais que eu odeie o Linq, decidi que posso tolerar isso, apenas porque ele está sendo executado em um construtor estático, uma vez por inicialização do aplicativo, portanto a sobrecarga de desempenho é inexistente.
Krythic 23/07
7

O seguinte seria equivalente ao seu forloop:

foreach (var item in contents.Skip(1))
    Message += item;
Dan Stevens
fonte
1
você quis var item??
Joe