Junior — Middle
Pode explicar o conceito de inicialização adiada de resultados em LINQ e como ela funciona?
sobes.tech IA
Resposta da IA
No LINQ (Language Integrated Query) em C# é utilizada a conceção de inicialização preguiçosa (lazy) ou execução diferida de consultas. Isto significa que a própria consulta à coleção não é executada no momento da sua declaração, mas apenas quando o resultado é acedido, por exemplo, ao percorrê-lo num ciclo ou ao chamar métodos que requerem materialização (por exemplo, ToList(), ToArray()).
A execução diferida permite:
- Otimizar o desempenho, pois as consultas não são executadas sem necessidade.
- Construir cadeias complexas de consultas que serão executadas numa única passagem.
Exemplo:
var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Consulta declarada, mas não executada
foreach(var num in query) // Aqui ocorre a execução da consulta
{
Console.WriteLine(num); // Vai imprimir 4 e 5
}
Se alterarmos a coleção numbers após a declaração da consulta, mas antes da sua execução, o resultado mudaria, pois a consulta é executada no momento da iteração.