LINQ Take

Resumo : neste tutorial, você aprenderá como usar o Take()método LINQ para recuperar um número especificado de elementos do início de uma sequência.

Introdução ao método LINQ Take()

O Take()método retorna um número especificado de elementos desde o início de uma sequência:

IEnumerable<TSource> Take<TSource>(
    this IEnumerable<TSource> source, 
    int count
)Linguagem de código:  C#  ( cs )

Nesta sintaxe:

  • TSourceé o tipo de elementos da sourcesequência.
  • source é a sequência de entrada
  • counté o número de elementos a serem retornados.

O Take()método retorna um IEnumerable<T>que contém o número especificado de elementos desde o início da sourcesequência.

Se the countfor menor ou igual a zero, o Take()método retornará um objeto vazio IEnumerable<T>.

Como outros métodos de extensão, o Take()método é implementado usando execução adiada. Isso significa que a consulta retornada pelo Take()método não será executada até que os elementos sejam enumerados chamando seu GetEnumerator()método ou usando a foreach.

Se você deseja obter um intervalo de elementos, você pode usar o Rangeobjeto para o segundo argumento em vez de usar a contagem de números inteiros:

IEnumerable<TSource> Take<TSource>(
    this IEnumerable<TSource> source, 
    Range range
)Linguagem de código:  C#  ( cs )

O Rangeobjeto especifica o intervalo de elementos a serem retornados. O intervalo é definido por seus índices inicial e final, que podem ser especificados no início ou no final da sequência.

Na prática, você costuma usar o Take()método com o Skip()método para pular alguns primeiros elementos e, em seguida, pegar um determinado número de elementos.

Exemplos do método LINQ Take()

Vejamos alguns exemplos de uso do Take()método LINQ.

1) Usando LINQ Take() para pegar alguns elementos de uma sequência

O programa a seguir demonstra como usar o Take()método para obter os três primeiros elementos de uma matriz de inteiros:

using static System.Console;

int[] numbers =  { 1, 2, 3, 4, 5 };

var results = numbers.Take(3);

foreach (int number in results)
{
    WriteLine(number);
}Linguagem de código:  C#  ( cs )

Saída:

1
2
3Linguagem de código:  C#  ( cs )

Atribuímos o resultado do Take()método à variável de resultados e usamos um foreachloop para iterar sobre os elementos na sequência de resultados e escrever cada um no console.

2) Usando LINQ Take() para pegar alguns elementos de uma sequência usando um objeto Range

O programa a seguir demonstra como usar o Take()método para recuperar um intervalo de elementos de um array:

using static System.Console;

int[] numbers =  { 1, 2, 3, 4, 5 };

var results = numbers.Take(new Range(1,4));

foreach (int number in results)
{
    WriteLine(number);
}Linguagem de código:  C#  ( cs )

Saída:

2
3
4Linguagem de código:  C#  ( cs )

Neste exemplo, usamos um Rangeobjeto que recebe dois argumentos: o índice inicial e o índice final (exclusivo).

O Rangeobjeto especifica um intervalo do índice 1 ao índice 4, que inclui os elementos 2, 3 e 4 da matriz de números.

Usar o Rangeobjeto acima é equivalente a usar os seguintes métodos Skip()e Take():

using static System.Console;

int[] numbers = { 1, 2, 3, 4, 5 };

var results = numbers.Skip(1).Take(3);

foreach (int number in results)
{
    WriteLine(number);
}Linguagem de código:  C#  ( cs )

Resumo

  • Use o método LINQ Take()para recuperar um número especificado de elementos do início de uma sequência ou de um intervalo de elementos na sequência.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *