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 nasource
sequência.TKey
é o tipo de chave retornado pelakeySelector
função.source
é a sequência de elementos a serem classificados, que é umIEnumerable<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 source
sequência ou keySelector
funçã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 0
Linguagem 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 => number
retorna 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 foreach
loop 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
K2
Linguagem 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.00
Linguagem de código: C# ( cs )
Como funciona.
Primeiro, defina uma Employee
classe que tenha três propriedades: Name
, Department
e 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 Employee
objetos 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 employees
lista 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.Salary
extrai o Salary
valor de cada Employee
objeto para classificação.
Por fim, grave as informações do funcionário no console usando um foreach
loop 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.