LINQ | Operador de partición | tomar mientras

En LINQ, los operadores de partición se utilizan para separar la secuencia dada en dos partes sin ordenar los elementos y devolver una de las partes. Los operadores de consulta estándar admiten 4 tipos diferentes de operadores de partición:

  1. Saltar
  2. Saltar Mientras
  3. Tomar
  4. tomar mientras

Operador TakeWhile

El operador TakeWhile se usa para devolver elementos de la secuencia dada siempre que cumpla con la condición dada y cuando la condición la satisface, omite aquellos elementos que no satisfacen la condición dada. Este método se sobrecarga de dos maneras diferentes :

  • TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>): este método se usa para devolver elementos de la secuencia dada siempre que una condición especificada sea verdadera.
  • TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource, Int32, Boolean>): este método se usa para devolver elementos de la secuencia dada siempre que una condición especificada sea verdadera. El valor de índice de los elementos se utiliza en la lógica de la función de predicado.

Puntos importantes:

  • No es compatible con la sintaxis de consulta en los lenguajes C# y VB.Net. Pero puede usar el método TakeWhile para consultar la variable o puede envolver su consulta entre paréntesis y luego llamar al método TakeWhile.
  • Admite la sintaxis del método en los lenguajes C# y VB.Net.
  • Está presente tanto en la clase Queryable como en la Enumerable.
  • Se implementa mediante el uso de ejecución diferida.
  • Lanzará una excepción ArgumentNullException si la fuente o la condición son nulas.

Ejemplo 1:

// C# program to illustrate the
// concept of TakeWhile operator
using System;
using System.Linq;
  
class GFG {
  
    static public void Main()
    {
  
        // Data source
        int[] sequence = {45, 67, 89, 13, 56,
                                76, 100, 90};
  
        // Query to pick those elements
        // which are less than 70
        // Using TakeWhile method
        var result = sequence.OrderBy(s => s).TakeWhile(s => s < 70);
  
        Console.WriteLine("New Sequence: ");
  
        // Display new sequence
        foreach(var val in result)
        {
            Console.WriteLine(val);
        }
    }
}
Producción:

New Sequence: 
13
45
56
67

Ejemplo 2:

// C# program to get the names of the 
// employees whose salary is less 
// than 50000
using System;
using System.Linq;
using System.Collections.Generic;
  
// Employee details
public class Employee {
  
    public int emp_id
    {
        get;
        set;
    }
    public string emp_name
    {
        get;
        set;
    }
    public string emp_gender
    {
        get;
        set;
    }
    public string emp_hire_date
    {
        get;
        set;
    }
    public int emp_salary
    {
        get;
        set;
    }
}
  
public class GFG {
  
    // Main method
    static public void Main()
    {
  
        List<Employee> emp = new List<Employee>() {
  
            new Employee() {emp_id = 209, emp_name = "Anjita", emp_gender = "Female",
                                    emp_hire_date = "12/3/2017", emp_salary = 20000},
  
            new Employee() {emp_id = 210, emp_name = "Soniya", emp_gender = "Female",
                                    emp_hire_date = "22/4/2018", emp_salary = 30000},
  
            new Employee() {emp_id = 211, emp_name = "Rohit", emp_gender = "Male",
                                  emp_hire_date = "3/5/2016", emp_salary = 40000},
  
            new Employee() {emp_id = 212, emp_name = "Anu", emp_gender = "Female",
                                  emp_hire_date = "4/8/2017", emp_salary = 80000},
  
            new Employee() {emp_id = 213, emp_name = "Anil", emp_gender = "Male",
                                emp_hire_date = "12/1/2016", emp_salary = 60000},
  
            new Employee() {emp_id = 214, emp_name = "Anju", emp_gender = "Female",
                                  emp_hire_date = "17/6/2015", emp_salary = 50000},
        };
  
        // Query to get the names of the
        // employees whose salary is less
        // than 50000 Using TakeWhile method
        var res = emp.TakeWhile(e => e.emp_salary < 50000);
  
        foreach(var val in res)
        {
            Console.WriteLine("Employee Name: {0}",
                                     val.emp_name);
        }
    }
}
Producción:

Employee Name: Anjita
Employee Name: Soniya
Employee Name: Rohit

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *