LINQ | ¿Cómo encontrar el agregado de la secuencia dada?

En LINQ, puede crear su propia operación de agregación personalizada mediante el método Agregado. Este método le permite realizar una operación de agregación personalizada en los valores de una colección o una secuencia. No es compatible con la sintaxis de consulta en los lenguajes C# y VB.Net, pero puede admitir la sintaxis de métodos en ambos idiomas. Está presente tanto en la clase Queryable como en la Enumerable. Este método se sobrecarga de 3 maneras diferentes:

  1. Aggregate<TSource, TAccumulate, TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>): este método se utiliza para aplicar una función acumuladora sobre una secuencia. El valor inicial especificado se utiliza como valor acumulador inicial y la función especificada se utiliza para seleccionar el valor de resultado.
  2. Aggregate<TSource, TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>): este método aplica una función acumuladora sobre una secuencia. El valor inicial especificado se utiliza como valor acumulador inicial.
  3. Aggregate<TSource>(IEnumerable<TSource>, Func<TSource, TSource, TSource>): este método aplica una función acumuladora sobre una secuencia.

Ejemplo 1:

// C# program to illustrate the
// use of aggregate method
using System;
using System.Linq;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Data source
        string[] sequence = {"Geeks", "gfg", 
                    "GeeksforGeeks", "GFG"};
  
        // Concatenate the element of the 
        // given sequence using Aggregate function
        var result = sequence.Aggregate((q1, q2) => q1 + "-" + q2);
        Console.WriteLine(result);
    }
}
Producción:

Geeks-gfg-GeeksforGeeks-GFG

Explicación: En var resultado = secuencia.Agregado((q1, q2) => q1+ “-“+q2); , primero toma los elementos Geeks y gfg y realiza una operación de concatenación entre ellos, luego toma este resultado para concatenar con el elemento GeeksfoGeeks. Nuevamente, este resultado se usa para realizar la operación de concatenación con el elemento GFG y, por último, el resultado final se almacena en la variable de resultado. O simplemente es como: (((Geeks-gfg)-GeeksforGeeks)-GFG)

Ejemplo 2:

// C# program to find the total 
// salary of the employees
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 find the total salary
        // of the employees
        // Using Aggregate method
        var res = emp.Select(e => e.emp_salary).Aggregate((x,
                                                y) => x + y);
                                                  
        Console.WriteLine("Total salary of the Employees: {0}", res);
    }
}
Producción:

Total salary of the Employees: 220000

Explicación: El funcionamiento del método Aggregate en este var res = emp.Select(e => e.emp_salary).Aggregate((x, y)=> x+y); declaración es:

(20000, 30000) => 20000 + 30000;
(50000, 40000) => 50000 + 40000;
(50000, 40000) => 130000 + 40000;
(130000, 40000) => 170000 + 40000;
(170000, 50000) => 170000 + 50000;
el valor final almacenado en res es 220000

Referencia:

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 *