LINQ TakeWhile

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 de predicateé o índice do sourceelemento.

O TakeWhile()método retorna um IEnumerable< TSource> que contém elementos da sourcesequê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 < 6nã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
5Linguagem 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 Charlieporque 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
BobLinguagem 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: 26Linguagem de código:  C#  ( cs )

Como funciona.

Primeiro, defina a Personclasse 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.

Deixe um comentário

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