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.