Sobes.tech
Junior — Middle

Môžete vysvetliť koncept odloženého inicializácie výsledkov v LINQ a ako funguje?

sobes.tech AI

Odpoveď od AI

V LINQ (Language Integrated Query) v C# sa využíva koncept odloženého (lenivého) inicializovania alebo odloženého vykonávania dopytov. To znamená, že samotný dopyt na kolekcii sa nevykonáva v momente jeho deklarácie, ale až keď sa k výsledku pristupuje, napríklad pri prechádzaní v cykle alebo volaní metód, ktoré vyžadujú materializáciu (napríklad ToList(), ToArray()).

Odložené vykonávanie umožňuje:

  • Optimalizovať výkon, pretože dopyty sa nevykonávajú zbytočne.
  • Vytvárať zložité reťazce dopytov, ktoré budú vykonané v jednom prechode.

Príklad:

var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // Dopyt je deklarovaný, ale nie je vykonaný

foreach(var num in query) // Tu sa dopyt vykoná
{
    Console.WriteLine(num); // Vypíše 4 a 5
}

Ak zmeníme kolekciu numbers po deklarácii dopytu, ale pred jeho vykonaním, výsledok sa zmení, pretože dopyt sa vykonáva presne v momente prechodu.