Sobes.tech
Junior

Poznáš LINQ?

sobes.tech AI

Odpoveď od AI

Áno, poznám.

LINQ (Language Integrated Query) je súbor technológií, ktoré integrujú funkčnosť dotazov do jazyka C#. Umožňujú písanie dotazov na rôzne zdroje dát (kolekcie, databázy, XML atď.) priamo v kóde C# s jednotnou syntaxou a modelom.

Hlavné komponenty a vlastnosti LINQ:

  • Poskytovatelia LINQ: implementujú rozhrania a triedy, ktoré prekladajú LINQ dotazy do špecifických príkazov pre príslušný zdroj dát. Príklady: LINQ to Objects, LINQ to SQL, LINQ to XML.
  • Operátory LINQ: rozšírenia pre IEnumerable<T> a IQueryable<T>, ktoré poskytujú štandardné operácie dotazov, ako filtrovanie, projekcia, zoradenie, skupinovanie a agregácia. Existujú v dvoch formách:
    • Syntax dotazu (Query Syntax), podobná SQL:
      // Príklad syntaxe dotazu
      var query = from item in collection
                  where item.Property > 10
                  orderby item.AnotherProperty
                  select item.Result;
      
    • Syntax metód (Method Syntax), využívajúca rozširujúce metódy:
      // Príklad syntaxe metód
      var query = collection.Where(item => item.Property > 10)
                            .OrderBy(item => item.AnotherProperty)
                            .Select(item => item.Result);
      
  • Odložené vyhodnotenie (Deferred Execution): LINQ dotazy sa nespúšťajú okamžite pri ich definovaní. Vyhodnotenie prebieha až vtedy, keď je výsledok dotazu naozaj potrebný (napríklad pri prechádzaní pomocou foreach, volaní ToList(), ToArray(), Count() a pod.). Toto optimalizuje prácu s dátami.
  • Silné typovanie (Strong Typing): LINQ využíva výhody statickej typizácie C#, poskytuje kontroly počas kompilácie a IntelliSense.
  • Možnosť kombinácie: operátory dotazov je možné ľahko kombinovať na vytvorenie zložitých dotazov.
  • Rozšíriteľnosť: je možné vytvárať vlastných poskytovateľov a operátory LINQ.

Najčastejšie používané operátory LINQ:

Kategória Operátory v syntaxe metód Popis
Filtrovanie Where, OfType Výber prvkov podľa podmienky alebo typu.
Projekcia Select, SelectMany Transformácia prvkov alebo rozbalenie.
Triedenie OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse Usporiadanie prvkov.
Skupinovanie GroupBy Skupinovanie prvkov podľa kľúča.
Zlúčenie Join, GroupJoin Zlúčenie prvkov z rôznych zdrojov.
Agregácia Count, LongCount, Sum, Average, Min, Max, Aggregate Výpočet agregovaných hodnôt.
Kvantifikátory All, Any, Contains, SequenceEqual Kontrola prítomnosti alebo zhody prvkov.
Prvky First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty Získanie jednotlivých prvkov.
Rozdeľovanie Take, Skip, TakeWhile, SkipWhile Výber alebo preskočenie prvkov.
Konverzia ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable Prevod na iné typy kolekcií.
Generovanie Range, Repeat Vytváranie sekvencií.
Množiny Distinct, Union, Intersect, Except Operácie nad množinami.
Zlúčenie Zip Zlúčenie prvkov z dvoch sekvencií.

LINQ výrazne zjednodušuje a sprístupňuje kód pre prácu s dátami v C#.