Resumo : neste tutorial, você aprenderá como classificar dados no EF Core usando os métodos OrderBy
, ThenBy
, OrderByDescending()
e
.ThenBy
Descending()
Usaremos a Employee
entidade que mapeia a Employees
tabela 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
método LINQ. Por exemplo, o seguinte usa para OrderBy
()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
BY
cláusula para ordenar o conjunto de resultados pela FirstName
coluna:
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 OrderBy
e
. Por exemplo, o seguinte ilustra como usar os métodos ThenBy()
e OrderBy
()
para classificar funcionários por nomes e sobrenomes:ThenBy()
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 FirstName
e :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
método LINQ. Por exemplo, o seguinte usa o método OrderByDescending() para classificar os funcionários pelo primeiro nome em ordem decrescente:OrderByDescending()
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 SELECT
selecionar dados da tabela Employees e ORDER
BY
DESC
classificar 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] DESC
Linguagem 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 SELECT
instrução para selecionar dados das Employees
tabelas e ORDER
BY
a cláusula para classificar os dados FirstName
em LastName
ordem 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 JoinedDate
em ordem crescente e depois FirstName
em 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] DESC
Linguagem 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.