LINQ | Operador de clasificación | Ordenar por

En LINQ, los operadores de clasificación se utilizan para reorganizar la secuencia dada en orden ascendente o descendente en función de uno o más atributos. Hay 5 tipos diferentes de operadores de clasificación disponibles en LINQ:

  1. Ordenar por
  2. orden por descendiente
  3. Entonces por
  4. EntoncesPorDescender
  5. Reverso

Ordenar por operador

El operador OrderBy se utiliza para reorganizar los elementos de la secuencia dada en orden ascendente. Este operador por defecto convierte el orden de la secuencia dada en orden ascendente. No es necesario agregar una condición ascendente adicional en la expresión de consulta, lo que significa que la palabra clave ascendente es opcional. También puede usar la palabra clave descendente para cambiar el orden de la secuencia dada en orden descendente.

OrderBy en la sintaxis de consulta: el operador OrderBy admite la sintaxis de consulta en lenguaje C# y VB.Net. En la sintaxis de consulta, la palabra orderby se usa como se muestra en el siguiente ejemplo:

Ejemplo:

// C# program to print the employee
// name in ascending order
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 = "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 the
        // employee in ascending order
        // Using orderby clause in Query Syntax
        var res = from e in emp
                    orderby e.emp_name
                        select e.emp_name;
  
        foreach(var val in res)
        {
            Console.WriteLine("Employee Name: {0}", val);
        }
    }
}

Producción:

Employee Name: Anil
Employee Name: Anjita
Employee Name: Anju
Employee Name: Rohit
Employee Name: Soniya
Employee Name: Supriya

OrderBy en la sintaxis del método: el operador OrderBy en la sintaxis del método está sobrecargado en dos tipos diferentes:

  • OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>): este método ordena los elementos de la secuencia dada en orden ascendente según la clave.
  • OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IComparer<TKey>): este método ordena los elementos de la secuencia dada en orden ascendente mediante el uso de un comparador especificado.

Está presente tanto en la clase Queryable como en la Enumerable. Y admita la sintaxis del método en los lenguajes C# y VB.NET. Como se muestra en el siguiente ejemplo:

Ejemplo:

// C# program to print the salary of
// the employees in ascending
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 = "Supriya", 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},
        };
  
        // Print the salary of the employees
        // in ascending order using the 
        // OrderBy operator
        var res = emp.OrderBy(a => a.emp_salary);
  
        Console.WriteLine("Salary of the employees: ");
          
        foreach(var val in res)
        {
            Console.WriteLine(val.emp_salary);
        }
    }
}

Producción:

Salary of the employees: 
20000
30000
40000
50000
60000
80000

Clasificación múltiple

En LINQ, puede ordenar los múltiples campos de la colección en una sola consulta y cada campo está separado por una coma. Cuando realiza una ordenación múltiple, la colección primero ordena de acuerdo con la primera condición y luego, si los dos campos en la colección dada son similares, ordenaría el segundo campo y así sucesivamente. Como se muestra en el siguiente ejemplo, emp_salary contiene dos valores similares, por lo que la clasificación se realiza de acuerdo con emp_id.

Ejemplo:

// C# program to illustrate multiple sorting
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 = 20000},
                                      
            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 = 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},
        };
  
        // Perform multiple sorting
        var res = from e in emp
                    orderby e.emp_salary, e.emp_id
                      select e;
  
        foreach(var val in res)
        {
            Console.WriteLine("Employee Salary: {0} Employee Id: {1}",
                                          val.emp_salary, val.emp_id);
        }
    }
}

Producción:

Employee Salary: 20000 Employee Id: 209
Employee Salary: 20000 Employee Id: 210
Employee Salary: 40000 Employee Id: 211
Employee Salary: 50000 Employee Id: 214
Employee Salary: 60000 Employee Id: 213
Employee Salary: 80000 Employee Id: 212

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 *