Resumo : neste tutorial, você aprenderá como selecionar dados de uma única tabela no EF Core usando o Select()
método LINQ.
Usaremos a Employee
entidade para a demonstração. A Employee
entidade mapeia para a Employees
tabela no banco de dados:
Selecionando todas as linhas de uma tabela
Para selecionar todas as linhas da Employees
tabela, você usa Employees
DbSet
e chama o ToList()
método. Por exemplo:
using static System.Console;
using HR;
using var context = new HRContext();
var employees = context.Employees.ToList();
foreach (var e in employees)
{
WriteLine($"{e.FirstName} {e.LastName}");
}
Linguagem de código: C# ( cs )
Saída:
John Doe
Jane Smith
Michael Johnson
Emily Brown
William Taylor
...
Linguagem de código: C# ( cs )
Nos bastidores, o EF Cores executa a seguinte instrução SQL para obter todas as linhas e colunas da Employees
tabela:
SELECT
[e].[Id],
[e].[DepartmentId],
[e].[FirstName],
[e].[JoinedDate],
[e].[LastName],
[e].[Salary]
FROM
[Employees] AS [e]
Linguagem de código: C# ( cs )
Selecionando algumas colunas de uma tabela
Para obter apenas o nome e o sobrenome e retornar uma lista de strings, você também pode usar o Select()
método LINQ. Por exemplo:
using static System.Console;
using HR;
using var context = new HRContext();
var names = context.Employees
.Select(e => $"{e.FirstName} {e.LastName}")
.ToList();
foreach (var name in names)
{
WriteLine(name);
}
Linguagem de código: C# ( cs )
Saída:
John Doe
Jane Smith
Michael Johnson
Emily Brown
William Taylor
...
Linguagem de código: C# ( cs )
Neste exemplo, o EF Core gera um SQL que seleciona apenas as colunas
e FirstName
da LastName
Employees
tabela, concatena as
e FirstName
e retorna uma lista de strings.LastName
SELECT
[e].[FirstName],
[e].[LastName]
FROM
[Employees] AS [e]
Linguagem de código: C# ( cs )
Retornando uma lista de objetos anônimos
O exemplo a seguir usa o Select()
método para selecionar as colunas
e FirstName
da JoinedDate
Employees
tabela e retorna uma lista de objetos anônimos , onde cada um contém as propriedades
e :FirstName
JoinedDate
using static System.Console;
using HR;
using var context = new HRContext();
var list = context.Employees
.Select(e => new
{
e.FirstName,
e.JoinedDate
})
.ToList();
foreach (var e in list)
{
WriteLine($"{e.FirstName} - {e.JoinedDate.ToShortDateString()}");
}
Linguagem de código: C# ( cs )
Saída:
John - 1/15/2023
Jane - 2/10/2023
Michael - 3/5/2023
Emily - 4/20/2023
William - 5/3/2023
...
Linguagem de código: C# ( cs )
Neste exemplo, o EF Core gera um SQL que seleciona apenas e FirstName
da JoinedDate
tabela Employees:
SELECT
[e].[FirstName],
[e].[JoinedDate]
FROM
[Employees] AS [e]
Linguagem de código: C# ( cs )
Resumo
- Use
Select()
o método LINQ para selecionar uma ou mais colunas em uma tabela.