LINQ | Operador de partición | Saltar 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 SkipWhile

El operador SkipWhile se usa para omitir los elementos según la función de predicado hasta que el elemento en la secuencia dada no satisfaga la condición dada y luego devuelve los elementos restantes. Este método se sobrecarga de dos maneras diferentes:

  • SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>): este método se usa para omitir los elementos en una secuencia dada siempre que una condición específica sea verdadera y luego devuelve los elementos restantes.
  • SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource, Int32, Boolean>): este método se usa para omitir los elementos en una secuencia dada siempre que una condición específica sea verdadera y luego devuelve los elementos restantes. El índice del elemento 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 SkipWhile para consultar la variable o puede envolver su consulta entre corchetes y luego llamar al método SkipWhile.
  • 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 SkipWhile operator
using System;
using System.Linq;
  
class GFG {
  
    static public void Main()
    {
  
        // Data source
        int[] sequence = {45, 67, 89, 13,
                             56, 76, 67};
  
        // Query which skips the 
        // elements lesser than 67
        // Using SkipWhile method
        var result = sequence.OrderBy(s => s).SkipWhile(s => s < 67);
        Console.WriteLine("Sequence: ");
  
        // Display new sequence
        foreach(var val in result)
        {
            Console.WriteLine(val);
        }
    }
}
Producción:

Sequence: 
67
67
76
89

Ejemplo 2:

// C# program to find the names of the
// employees whose length is less than 4
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 find the names of the
    // employees whose length are less
    // than 4 Using SkipWhile method
    var res = emp.SkipWhile(e=> e.emp_name.Length > 4);
              
    foreach(var val in res) 
    { 
        Console.WriteLine("Employee Name: {0}",
                                 val.emp_name); 
    } 
      
    } 
} 
Producción:

Employee Name: Anu
Employee Name: Anil
Employee Name: Anju

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 *