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:
- Ordenar por
- orden por descendiente
- Entonces por
- EntoncesPorDescender
- 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