Sobes.tech
Junior — Middle

Puteți explica conceptul de inițializare întârziată a rezultatelor în LINQ și cum funcționează?

sobes.tech AI

Răspuns de la AI

În LINQ (Language Integrated Query) în C# se utilizează conceptul de inițializare întârziată (lazy) sau executare întârziată a interogărilor. Aceasta înseamnă că însăși interogarea asupra colecției nu se execută în momentul declarării, ci doar atunci când se accesează rezultatul, de exemplu, în timpul parcurgerii într-un ciclu sau apelând metode care necesită materializare (de exemplu, ToList(), ToArray()).

Executarea întârziată permite:

  • Optimizarea performanței, deoarece interogările nu sunt executate inutil.
  • Construirea de lanțuri complexe de interogări care vor fi executate într-o singură trecere.

Exemplu:

var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Interogarea este declarată, dar nu executată

foreach(var num in query) // Aici are loc executarea interogării
{
    Console.WriteLine(num); // Va afișa 4 și 5
}

Dacă modificăm colecția numbers după declararea interogării, dar înainte de executare, rezultatul se va schimba, deoarece interogarea se execută exact în momentul parcurgerii.