Junior — Middle
Можете ли да објасните концепт одложене иницијализације резултата у LINQ-у и како он ради?
sobes.tech АИ
Одговор од АИ
U LINQ (Language Integrated Query) u C# koristi se koncept odložene (lenje) inicijalizacije ili odložene izvršnosti upita. To znači da sam upit na kolekciji nije izvršen u trenutku njegovog deklarisanja, već tek kada se pristupi rezultatu, na primer, tokom prolaska u petlji ili pozivanjem metoda koji zahtevaju materializaciju (npr. ToList(), ToArray()).
Odložena izvršnost omogućava:
- Optimizaciju performansi, jer se upiti ne izvršavaju nepotrebno.
- Sastavljanje složenih lanaca upita koji će biti izvršeni u jednom prolazu.
Primer:
var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Upit je deklarisan, ali ne i izvršen
foreach(var num in query) // Ovde se izvršava upit
{
Console.WriteLine(num); // Ispisaće 4 i 5
}
Ako promenimo kolekciju numbers nakon deklarisanja upita, ali pre njegovog izvršenja, rezultat će se promeniti, jer se upit izvršava tačno u trenutku prolaska.