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:
- Saltar
- Saltar Mientras
- Tomar
- 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