LINQ OrderByDecrescente

Resumo : neste tutorial, você aprenderá como usar o OrderByDescending()método LINQ para classificar elementos de uma sequência em ordem decrescente com base em uma chave especificada.

Introdução ao método LINQ OrderByDescendente()

O OrderByDescending()método classifica os elementos de uma sequência em ordem decrescente e retorna uma nova sequência classificada.

O seguinte mostra a sintaxe do OrderByDescending()método:

public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey> (
    this IEnumerable<TSource> source, 
    Func<TSource, TKey> keySelector
);Linguagem de código:  C#  ( cs )

Nesta sintaxe:

  • TSourceé o tipo de elementos na sourcesequência.
  • TKeyé o tipo de chave retornado pela keySelectorfunção.
  • sourceé a sequência de elementos a serem classificados, que é um IEnumerable<T>tipo.
  • keySelectoré uma função para extrair uma chave de um elemento.

O OrderByDescending()método retorna um IOrderedEnumerable<TElement> que contém elementos classificados em ordem decrescente de acordo com uma chave.

Se a sourcesequência ou keySelectorfunção for null, o método lançará um ArgumentNullException.

Para classificar uma sequência de elementos por uma chave em ordem crescente, você usa o OrderBy()método.

Exemplos de métodos LINQ OrderByDescendente()

Vejamos alguns exemplos de uso do OrderByDescending()método.

1) Usando o método OrderByDescendente() para classificar uma sequência de números

O exemplo a seguir demonstra como usar o OrderByDescending()método para classificar uma sequência de números em ordem decrescente:

using static System.Console;

int[] numbers = { 3, 1, 4, 0, 5 };

var sortedNumbers = numbers.OrderByDescending(number => number);

foreach (var number in sortedNumbers)
{
    Write($"{number} ");
}Linguagem de código:  C#  ( cs )

Saída:

5 4 3 1 0Linguagem de código:  C#  ( cs )

Como funciona.

Primeiro, declare um array de inteiros e inicialize-o com cinco números:

int[] numbers = { 3, 1, 4, 0, 5 };

Segundo, classifique os números na matriz de números em ordem decrescente usando o OrderByDescending()método. A expressão lambda number => numberretorna o número na matriz de números para classificação:

var sortedNumbers = numbers.OrderByDescending(number => number);Linguagem de código:  JavaScript  ( javascript )

Terceiro, escreva o número na sequência no console usando um foreachloop e Write()um método:

foreach (var number in sortedNumbers)
{
    Write($"{number} ");
}Linguagem de código:  PHP  ( php )

2) Usando o método OrderByDescendente() para classificar uma sequência de strings

O exemplo a seguir usa o OrderByDescending()método para classificar uma matriz de strings em ordem decrescente:

using static System.Console;

string[] mountains = {
    "Mount Everest",
    "K2",
    "Kangchenjunga",
    "Lhotse",
    "Makalu"
};

var sortedMountains = mountains.OrderByDescending(m => m);

foreach (var mountain in sortedMountains)
{
    WriteLine(mountain);
}Linguagem de código:  C#  ( cs )

Saída:

Mount Everest
Makalu
Lhotse
Kangchenjunga
K2Linguagem de código:  C#  ( cs )

3) Usando o método LINQ OrderByDescendente() para classificar uma sequência de objetos em ordem decrescente de acordo com uma chave

O programa a seguir demonstra como usar o OrderByDescending()método para classificar uma lista de objetos Employee por salário em ordem decrescente:

using static System.Console;

class Employee
{
    public string? Name { get; set; }
    public string? Department { get; set; }
    public int Salary { get; set; }
}
class Program
{
    public static void Main()
    {
        var employees = new List<Employee>()
        {
                new Employee { Name = "John", Department = "HR", Salary = 50000 },
                new Employee { Name = "Jane", Department = "IT", Salary = 60000 },
                new Employee { Name = "Bob", Department = "HR", Salary = 45000 },
                new Employee { Name = "Sara", Department = "IT", Salary = 55000 },
                new Employee { Name = "Tom", Department = "IT", Salary = 65000 }
            };

        var results = employees.OrderByDescending(e => e.Salary);

        foreach (var employee in results)
        {
            WriteLine($"{employee.Name} - {employee.Salary:C}");
        }
    }
}Linguagem de código:  C#  ( cs )

Saída:

Tom - $65,000.00
Jane - $60,000.00
Sara - $55,000.00
John - $50,000.00
Bob - $45,000.00Linguagem de código:  C#  ( cs )

Como funciona.

Primeiro, defina uma Employeeclasse que tenha três propriedades: Name, Departmente Salary.

class Employee
{
    public string? Name { get; set; }
    public string? Department { get; set; }
    public int Salary { get; set; }
}Linguagem de código:  C#  ( cs )

Segundo, defina uma lista de Employeeobjetos no Main()método:

var employees = new List<Employee>() 
{
    new Employee { Name = "John", Department = "HR", Salary = 50000 },
    new Employee { Name = "Jane", Department = "IT", Salary = 60000 },
    new Employee { Name = "Bob", Department = "HR", Salary = 45000 },
    new Employee { Name = "Sara", Department = "IT", Salary = 55000 },
    new Employee { Name = "Tom", Department = "IT", Salary = 65000 }
};Linguagem de código:  C#  ( cs )

Terceiro, classifique a employeeslista por salário em ordem decrescente usando o OrderByDescending()método:

 var results = employees.OrderByDescending(e => e.Salary);Linguagem de código:  C#  ( cs )

A expressão lambda e => e.Salaryextrai o Salaryvalor de cada Employeeobjeto para classificação.

Por fim, grave as informações do funcionário no console usando um foreachloop e WriteLine()um método:

foreach (var employee in results)
{
    WriteLine($"{employee.Name} - {employee.Salary:C}");

}Linguagem de código:  C#  ( cs )

Resumo

  • Use o método LINQ OrderByDescending()para classificar os elementos de uma sequência por uma chave em ordem decrescente.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *