LINQ - Escrevendo consultas LINQ (.NET Core)
Hoje vamos recordar as diferentes formas de escrever consultas LINQ na linguagem C#. |
Vamos iniciar recordando que uma consulta LINQ é um objeto IEnumerable genérico a partir do qual você obtém resultados, e, a variável à qual o resultado é atribuído é conhecido como variável de intervalo.
Esta variável é uma coleção não povoada; é apenas um objeto de consulta que pode recuperar dados. O LINQ não acessa os dados de origem até você tentar usar o objeto de consulta para trabalhar com os resultados. Isso é conhecido como execução adiada ou deferred execution.
Para consultas básicas, usar o LINQ com C# é muito fácil e intuitivo, pois o C# fornece palavras-chave que são mapeadas diretamente para os recursos que foram adicionados por meio de métodos de extensão. O benefício é que você pode escrever consultas tipadas de maneira muito semelhante ao SQL, obtendo suporte ao IntelliSense o tempo todo.
O que é preciso para escrever consultas LINQ ?
Para escrever uma consulta LINQ, precisamos definir 3 coisas:
Uma consulta nada mais é do que um conjunto de instruções aplicadas a uma fonte de dados (por exemplo, objetos na memória, SQL, XML, etc.) para executar determinadas operações (por exemplo, operações CRUD) e, em seguida, informar a forma da saída dessa consulta.
Isso significa que
a consulta não é responsável pela saída, e sim pelo formato da saída que é o que
vair retornar dessa consulta, se será retornado um valor específico, uma lista
ou um objeto específico.
Dessa forma uma consulta pode ser vista como uma combinação de 3 itens
importantes:
E quais são as maneiras de escrever uma consulta LINQ ?
Podemos escrever a consulta LINQ de três maneiras diferentes :
Nota: Do ponto de vista do desempenho, não existe diferença entre as três abordagens acima. Portanto, o que você precisa usar depende da sua preferência pessoal. O que você precisa ter em mente é que, por trás dos panos, as consultas LINQ gravadas usando a sintaxe da consulta são convertidas em suas expressões lambda antes de serem compiladas.
Sintaxe de consulta
É uma das maneiras mais fáceis de escrever consultas LINQ complexas em um formato fácil e legível.
A sintaxe para esse tipo de consulta é muito semelhante à Consulta SQL. Se você estiver familiarizado com as consultas SQL, será fácil escrever consultas LINQ usando esta sintaxe de consulta.
A sintaxe é fornecida abaixo.
Sintaxe de método
A sintaxe do método se torna mais popular hoje em dia para escrever consultas LINQ. Ele usa uma expressão lambda para definir a condição da consulta.
As sintaxes dos
métodos são fáceis de escrever consultas simples para executar operações de
leitura e gravação em uma fonte de dados específica. Porém, para consultas
complexas, as sintaxes dos métodos são um pouco difíceis de escrever em
comparação com a sintaxe da consulta.
Nessa abordagem, a consulta LINQ é gravada usando vários métodos, combinando-os
com um ponto(.).
Sintaxe Mista
Essa é a combinação das sintaxe de Consulta e Metodo.
Vejamos agora um exemplo de como usar cada uma dessas sintaxes.
Vamos supor que temos uma lista de números inteiros e precisamos escrever consultas usando cada um das sintaxes descritas conforme os requisitos definidos abaixo:
Para isso vamos criar um projeto no Visual Studio 2019 Community usando uma aplicação do tipo Console (.NET Core):
Vamos implementar a criação de cada consulta na sua respectiva sintaxe:
static void Main(string[] args)
{
//Data Source ou Fonte de dados
List<int> numeros = new List<int>()
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
};
//Consulta LINQ usando a sintaxe de Consulta
var sintaxeConsulta = from n in numeros
where n > 5
select n;
//Consulta LINQ usando a sintaxe de Método
var sintaxeMetodo = numeros.Where(n => n > 5).ToList();
//Consulta LINQ usando a sintaxe Mista
var sintaxeMista = (from n in numeros
where n > 5
select n).Sum();
//Execução foreach (var item in <consulta>) { Console.Write(item + " "); } Console.ReadKey(); } } |
Temos assim as consultas LINQ definidas segundo as sintaxes existentes.
"Fui buscado
dos que não perguntavam por mim, fui achado daqueles que não me buscavam; a uma
nação que não se chamava do meu nome eu disse: Eis-me aqui. Eis-me aqui."
Isaías 65:1
Referências: