Seleção de núcleo EF

Resumo : neste tutorial, você aprenderá como selecionar dados de uma única tabela no EF Core usando o Select()método LINQ.

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

Selecionando todas as linhas de uma tabela

Para selecionar todas as linhas da Employeestabela, você usa Employees DbSete 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 Employeestabela:

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 FirstNamee LastNameda Employeestabela, concatena as FirstNamee LastNamee retorna uma lista de strings.

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 FirstNamee JoinedDateda Employeestabela e retorna uma lista de objetos anônimos , onde cada um contém as propriedades FirstNamee :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 FirstNameda JoinedDatetabela 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.

Deixe um comentário

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