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:
- Agrupar por
- 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); } } } }
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