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);
- Syntax dotazu (Query Syntax), podobná SQL:
- 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#.