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 dasource
sequência.source
é a sequência de entradacount
é 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 source
sequência.
Se the count
for 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 Range
objeto 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 Range
objeto 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
3
Linguagem de código: C# ( cs )
Atribuímos o resultado do Take()
método à variável de resultados e usamos um foreach
loop 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
4
Linguagem de código: C# ( cs )
Neste exemplo, usamos um Range
objeto que recebe dois argumentos: o índice inicial e o índice final (exclusivo).
O Range
objeto especifica um intervalo do índice 1 ao índice 4, que inclui os elementos 2, 3 e 4 da matriz de números.
Usar o Range
objeto 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.