Resumo : neste tutorial, você aprenderá como usar o TakeWhile()
método LINQ para recuperar elementos de uma sequência, desde que uma condição seja verdadeira.
Introdução ao método LINQ TakeWhile()
O TakeWhile()
método permite obter elementos de uma sequência, desde que uma condição seja verdadeira e pular os elementos restantes:
IEnumerable<TSource> TakeWhile<TSource> (
this IEnumerable<TSource> source,
Func<TSource,int,bool> predicate
);
Linguagem de código: C# ( cs )
Nesta sintaxe:
source
é a sequência para recuperar os elementos.predicate
é uma função para testar cada elemento na fonte para a condição. O segundo parâmetro depredicate
é o índice dosource
elemento.
O TakeWhile()
método retorna um IEnumerable
< TSource
> que contém elementos da source
sequência.
Exemplos do método LINQ TakeWhile()
Vejamos alguns exemplos de uso do TakeWhile()
método LINQ.
1) Usando o método LINQ TakeWhile() para filtrar números
O exemplo a seguir usa o método LINQ TakeWhile()
para filtrar números até que a condição num < 6
não seja mais verdadeira:
using static System.Console;
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var result = numbers.TakeWhile(num => num < 6);
foreach (var number in result)
{
WriteLine(number);
}
Linguagem de código: C# ( cs )
Saída:
1
2
3
4
5
Linguagem de código: C# ( cs )
Observe que assim que TakeWhile()
encontra o número 6, ele para e retorna os números filtrados.
2) Usando o método LINQ TakeWhile() para filtrar strings
O exemplo a seguir usa o TakeWhile()
método para recuperar nomes da matriz de nomes até que o comprimento do nome seja menor que 6 caracteres. Ele interrompe o nome Charlie
porque o comprimento desse nome é de 6 caracteres:
using static System.Console;
string[] names = { "Alice", "Bob", "Charlie", "Richard", "Eve" };
var result = names.TakeWhile(
name => name.Length < 6
);
foreach (var name in result)
{
WriteLine(name);
}
Linguagem de código: C# ( cs )
Saída:
Alice
Bob
Linguagem de código: C# ( cs )
3) Usando o método LINQ TakeWhile() para filtrar objetos
O exemplo a seguir ilustra como usar o TakeWhile()
método para filtrar objetos:
using static System.Console;
namespace LINQDemo;
public class Person
{
public required string Name
{
get; set;
}
public int Age
{
get; set;
}
}
public class Program
{
public static void Main(string[] args)
{
var people = new List<Person>
{
new Person { Name = "Alice", Age = 25 },
new Person { Name = "Bob", Age = 26 },
new Person { Name = "Charlie", Age = 30 },
new Person { Name = "William", Age = 22 },
new Person { Name = "Eve", Age = 18 }
};
var result = people.TakeWhile(person => person.Age < 30);
foreach (var person in result)
{
WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
Linguagem de código: C# ( cs )
Saída:
Name: Alice, Age: 25
Name: Bob, Age: 26
Linguagem de código: C# ( cs )
Como funciona.
Primeiro, defina a Person
classe que representa os indivíduos com seus nomes e idades
Em segundo lugar, use TakeWhile()
o método para filtrar a lista e recuperar pessoas com idade inferior a 30 anos. O TakeWhile()
método para quando encontra uma pessoa com 30 anos ou mais.
Resumo
- Use o método LINQ
TakeWhile()
para recuperar elementos de uma sequência, desde que uma condição seja verdadeira e pule os elementos restantes.