LINQ | Dejar palabra clave

A veces, cuando trabajamos con una expresión de consulta, necesitamos una variable que pueda almacenar el resultado de la subexpresión para reutilizarla en la siguiente cláusula. Este tipo de servicio lo proporciona la palabra clave Let. La palabra clave Let le permite crear una variable de rango e inicializarla con el resultado de la expresión de consulta y luego puede usar esa variable con la próxima cláusula en la misma consulta. Cuando inicializa una variable de rango con un valor después de eso, no puede almacenar otro valor en la variable de rango.

Ejemplo 1:

// C# program to illustrate the
// concept of the let keyword
using System;
using System.Linq;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Data source
        int[] sequence = {2, 78, 90,
                          5, 45, 6};
  
        // Using let keyword
        var result = from s in sequence
            let a1
            = s + 100 where a1 > 150 select a1;
  
        // Display the result
        foreach(var val in result)
        {
            Console.WriteLine(val);
        }
    }
}
Producción:

178
190

Explicación: En el ejemplo anterior, el resultado es la variable de consulta que almacena el resultado de la expresión de consulta dada. En la expresión de consulta, creamos una variable de rango usando la palabra clave let , es decir, a1 . En a1 , almacenamos el resultado de las expresiones s + 100 . Después de eso, usamos esta variable en la cláusula where para comparar cada elemento si es mayor que 150 o no y, por último, imprimimos aquellos elementos que son mayores que 150 .

Ejemplo: 2

// C# program to print the name of those
// employees whose name contain more
// than 4 characters in lowercase
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;
    }
}
  
class GFG {
  
    // Main method
    static public void Main()
    {
        List<Employee> emp = new List<Employee>() {
  
            new Employee() {emp_id = 209, emp_name = "ANU", emp_gender = "Female",
                                 emp_hire_date = "12/3/2017", emp_salary = 20000},
  
            new Employee() {emp_id = 210, emp_name = "SIYA", 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 = "SUPRIYA", emp_gender = "Female",
                                      emp_hire_date = "4/8/2017", emp_salary = 40000},
  
            new Employee() {emp_id = 213, emp_name = "ANIL", emp_gender = "Male",
                                emp_hire_date = "12/1/2016", emp_salary = 40000},
  
            new Employee() {emp_id = 214, emp_name = "ANJU", emp_gender = "Female",
                                  emp_hire_date = "17/6/2015", emp_salary = 50000},
        };
  
        // Query to print the name of those
        // employees whose name contain more
        // than 4 characters in lowercase
        // Using let clause
        var res = from e in emp
            let name
            = e.emp_name.ToLower()
                where name.Length
            > 4 select name;
  
        foreach(var val in res)
        {
            Console.WriteLine("Employee Name: {0}", val);
        }
    }
}
Producción:

Employee Name: rohit
Employee Name: supriya

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 *