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.

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

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;

1
você quis var item??
Joe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.