LINQ | Operador de agrupación | Para buscar

En LINQ, los operadores de agrupación seleccionan los elementos de la secuencia o colección que contiene atributos comunes y los sirven en un grupo. O, en otras palabras, podemos decir que el operador de agrupación devuelve el grupo de elementos en función de la clave dada. Este grupo se mantiene en un tipo especial de colección, que implementa la interfaz IGrouping<TKey, TElement>, donde TKey es la clave a través de la cual se crea el grupo y TElement es la colección de elementos que empareja con el valor de la clave de agrupación. Por ejemplo, una secuencia contiene 6 elementos, es decir, Abc , cvd , Abc , Abc , ert , Por , ahora queremos un grupo en el que contengan todos los Abc .presentes en esa secuencia. Entonces Abc es la clave a través de la cual creamos otro grupo que contiene 3 Abc. Como se muestra en la siguiente imagen:

El operador de consulta estándar contiene dos tipos diferentes de operadores de agrupación:

  1. Agrupar por
  2. Para buscar

Operador ParaBuscar

El operador ToLookup se usa para colocar el elemento en un LookUp<TKey, TElement> basado en una función de selector de clave. Aquí, LookUp<TKey, TElement> es un diccionario de uno a muchos. El funcionamiento del operador ToLookup es bastante similar al del operador GroupBy.

Puntos importantes:

  • No es compatible con la sintaxis de consulta en los lenguajes C# y VB.Net.
  • Admite la sintaxis del método en los lenguajes C# y VB.Net.
  • Solo está presente en la clase Enumerable.
  • Se sobrecarga en cuatro tipos diferentes.
  • Lanza ArgumentNullException si la fuente o keySelector es nula.
  • Se implementa mediante el uso de ejecución inmediata.

Ejemplo:

// C# program to divide the employees in 
// groups according to their gender
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 = "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 = "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 divide the employees
        // in the groups according to 
        // their gender Using the 
        // ToLookup method
        var res = emp.ToLookup(e => e.emp_gender);
  
        foreach(var val in res)
        {
            // Here salary is the key value
            Console.WriteLine("Group By Gender: {0}", val.Key);
  
            // Display name of the employees
            foreach(Employee e in val)
            {
                Console.WriteLine("Employee Name: {0}", e.emp_name);
            }
        }
    }
}
Producción:

Group By Gender: Female
Employee Name: Anjita
Employee Name: Soniya
Employee Name: Supriya
Employee Name: Anju
Group By Gender: Male
Employee Name: Rohit
Employee Name: Anil

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 *