Sobes.tech
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.