EF Core Ordenar por

Resumo : neste tutorial, você aprenderá como classificar dados no EF Core usando os métodos OrderBy, ThenBy, OrderByDescending()e ThenByDescending().

Usaremos a Employeeentidade que mapeia a Employeestabela no banco de dados para a demonstração:

Classificando por uma coluna em ordem crescente

Para classificar os dados por uma coluna em ordem crescente, você usa o OrderBy()método LINQ. Por exemplo, o seguinte usa para OrderBy()classificar os funcionários pelos primeiros nomes em ordem crescente:

using HR;

using var context = new HRContext();

var list = context.Employees
                .OrderBy(e => e.FirstName)
                .ToList();

foreach (var e in list)
{
    Console.WriteLine(e.FirstName);
}Linguagem de código:  C#  ( cs )

Saída:

Abigail
Addison
Aiden
Alexander
Alexander
Amelia
...Linguagem de código:  texto simples  ( texto simples )

Neste exemplo, o EF Core gera um SQL que seleciona os dados do funcionário e usa a ORDER BYcláusula para ordenar o conjunto de resultados pela FirstNamecoluna:

SELECT 
  [e].[Id], 
  [e].[DepartmentId], 
  [e].[FirstName], 
  [e].[JoinedDate], 
  [e].[LastName], 
  [e].[Salary] 
FROM 
  [Employees] AS [e] 
ORDER BY 
  [e].[FirstName]Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Classificando por duas ou mais colunas em ordem crescente

Para classificar os dados por duas colunas, você usa os métodos OrderBye ThenBy(). Por exemplo, o seguinte ilustra como usar os métodos OrderBy()e ThenBy()para classificar funcionários por nomes e sobrenomes:

using HR;

using var context = new HRContext();

var list = context.Employees
                .OrderBy(e => e.FirstName)
                .ThenBy(e => e.LastName)
                .ToList();

foreach (var e in list)
{
    Console.WriteLine($"{e.FirstName} {e.LastName}");
}Linguagem de código:  C#  ( cs )

Saída:

Abigail Adams
Addison Hill
Aiden Wright
Alexander Green
Alexander Young
Amelia Scott
...Linguagem de código:  texto simples  ( texto simples )

Nos bastidores, o EF Core gera uma instrução SQL que seleciona dados da tabela Employees e classifica o resultado definido pelas colunas FirstNamee :LastName

SELECT 
  [e].[Id], 
  [e].[DepartmentId], 
  [e].[FirstName], 
  [e].[JoinedDate], 
  [e].[LastName], 
  [e].[Salary] 
FROM 
  [Employees] AS [e] 
ORDER BY 
  [e].[FirstName], 
  [e].[LastName]
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Classificando por uma coluna em ordem decrescente

Para classificar os dados em ordem decrescente, você usa o OrderByDescending()método LINQ. Por exemplo, o seguinte usa o método OrderByDescending() para classificar os funcionários pelo primeiro nome em ordem decrescente:

using HR;

using var context = new HRContext();

var list = context.Employees
                .OrderByDescending(e => e.FirstName)
                .ToList();

foreach (var e in list)
{
    Console.WriteLine(e.FirstName);
}Linguagem de código:  C#  ( cs )

Saída:

Zoe
Wyatt
William
Thomas
Sophia
Sophia
Sofia
...Linguagem de código:  texto simples  ( texto simples )

Neste exemplo, o EF Core gera uma instrução SQL que usa para SELECTselecionar dados da tabela Employees e ORDER BY DESCclassificar os funcionários pelo primeiro nome em ordem decrescente:

SELECT 
  [e].[Id], 
  [e].[DepartmentId], 
  [e].[FirstName], 
  [e].[JoinedDate], 
  [e].[LastName], 
  [e].[Salary] 
FROM 
  [Employees] AS [e] 
ORDER BY 
  [e].[FirstName] DESCLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Classificando por duas ou mais colunas em ordem decrescente

Para classificar os dados por duas ou mais colunas em ordem decrescente, você usa os métodos LINQ OrderByDescending()e .ThenByDescending()

O exemplo a seguir usa os métodos OrderByDescending()e ThenByDescending()para classificar os funcionários por nomes e depois por sobrenomes:

using HR;

using var context = new HRContext();

var list = context.Employees
                .OrderByDescending(e => e.FirstName)
                .ThenByDescending(e => e.LastName)
                .ToList();

foreach (var e in list)
{
    Console.WriteLine(e.FirstName);
}Linguagem de código:  C#  ( cs )

Saída:

Zoe Hill
Wyatt Allen
William Taylor
Thomas Lopez
Sophia Wilson
Sophia Lee
Sofia Thomas
...Linguagem de código:  texto simples  ( texto simples )

O EF Core executa um SQL que usa a SELECTinstrução para selecionar dados das Employeestabelas e ORDER BYa cláusula para classificar os dados FirstNameem LastNameordem decrescente:

SELECT 
  [e].[Id], 
  [e].[DepartmentId], 
  [e].[FirstName], 
  [e].[JoinedDate], 
  [e].[LastName], 
  [e].[Salary] 
FROM 
  [Employees] AS [e] 
ORDER BY 
  [e].[FirstName] DESC, 
  [e].[LastName] DESC
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Observe que você pode chamar o ThenByDescending()método para classificar os dados por outra coluna.

Classificando uma coluna em ordem crescente e outra coluna em ordem decrescente

A seguir, são usados ​​os métodos OrderBy()e ThenByDescending()para classificar os funcionários por data de ingresso em ordem crescente e, em seguida, classificar o conjunto de resultados classificados pelos primeiros nomes em ordem decrescente:

using static System.Console;
using HR;


using var context = new HRContext();

var list = context.Employees
                .OrderBy(e => e.JoinedDate)
                .ThenByDescending(e => e.FirstName)
                .ToList();

foreach (var e in list)
{
    WriteLine($"{e.JoinedDate.ToShortDateString()} {e.LastName}");
}Linguagem de código:  C#  ( cs )

Saída:

1/1/2023 Green
1/5/2023 Brown
1/15/2023 Doe
1/16/2023 Turner
1/29/2023 Wright
2/9/2023 Scott
...Linguagem de código:  texto simples  ( texto simples )

Neste exemplo, o EF Core gera uma instrução SQL que classifica JoinedDateem ordem crescente e depois FirstNameem ordem decrescente:

SELECT 
  [e].[Id], 
  [e].[DepartmentId], 
  [e].[FirstName], 
  [e].[JoinedDate], 
  [e].[LastName], 
  [e].[Salary] 
FROM 
  [Employees] AS [e] 
ORDER BY 
  [e].[JoinedDate], 
  [e].[FirstName] DESCLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Resumo

  • Use OrderBy()o método para classificar os dados em ordem crescente.
  • Use ThenBy()para classificar um conjunto de resultados classificado por outra coluna em ordem crescente.
  • Use OrderByDescending()o método para classificar os dados em ordem decrescente.
  • Use ThenByDescending()o método para classificar um conjunto de resultados classificado por outra coluna em ordem decrescente.

Deixe um comentário

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