Sobes.tech
Junior — Middle

Můžete vysvětlit koncept odložené inicializace výsledků v LINQ a jak to funguje?

sobes.tech AI

Odpověď od AI

V LINQ (Language Integrated Query) v C# se používá koncept odložené (líné) inicializace nebo odloženého provádění dotazů. To znamená, že samotný dotaz na kolekci není vykonán v okamžiku jeho deklarace, ale až při přístupu k výsledku, například při průchodu v cyklu nebo volání metod, které vyžadují materializaci (například ToList(), ToArray()).

Odložené provádění umožňuje:

  • Optimalizovat výkon, protože dotazy nejsou vykonávány zbytečně.
  • Sestavovat složité řetězce dotazů, které budou provedeny jedním průchodem.

Příklad:

var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Dotaz je deklarován, ale neproveden

foreach(var num in query) // Zde dochází k provedení dotazu
{
    Console.WriteLine(num); // Vypíše 4 a 5
}

Pokud změníme kolekci numbers po deklaraci dotazu, ale před jeho provedením, výsledek se změní, protože dotaz je prováděn právě v okamžiku průchodu.