Junior
Znáš LINQ?
sobes.tech AI
Odpověď od AI
Ano, znám.
LINQ (Language Integrated Query) je soubor technologií, které integrují funkčnost dotazů do jazyka C#. Umožňuje psát dotazy na různé zdroje dat (kolekce, databáze, XML atd.) přímo v kódu C# s jednotnou syntaxí a modelem.
Hlavní komponenty a vlastnosti LINQ:
- Poskytovatelé LINQ: implementují rozhraní a třídy, které překladají LINQ dotazy do specifických příkazů pro daný zdroj dat. Příklady: LINQ to Objects, LINQ to SQL, LINQ to XML.
- Operátory LINQ: rozšíření pro IEnumerable<T> a IQueryable<T>, které poskytují standardní operace dotazů, jako filtrování, projekce, třídění, seskupování a agregace. Existují ve dvou formách:
- Syntaxe dotazu (Query Syntax), podobná SQL:
// Příklad syntaxe dotazu var query = from item in collection where item.Property > 10 orderby item.AnotherProperty select item.Result; - Syntaxe metod (Method Syntax), využívající rozšiřující metody:
// Příklad syntaxe metod var query = collection.Where(item => item.Property > 10) .OrderBy(item => item.AnotherProperty) .Select(item => item.Result);
- Syntaxe dotazu (Query Syntax), podobná SQL:
- Odložené vyhodnocení (Deferred Execution): LINQ dotazy se nespouštějí ihned při jejich definici. Vyhodnocení probíhá až tehdy, když je výsledek dotazu skutečně potřeba (například při průchodu pomocí
foreach, voláníToList(),ToArray(),Count()atd.). To optimalizuje práci s daty. - Silné typování (Strong Typing): LINQ využívá výhod statického typového systému C#, poskytuje kontroly během kompilace a IntelliSense.
- Možnost kombinace: operátory dotazů lze snadno spojovat pro tvorbu složitých dotazů.
- Rozšiřitelnost: lze vytvářet vlastní poskytovatele a operátory LINQ.
Nejčastěji používané operátory LINQ:
| Kategorie | Operátory ve syntaxe metod | Popis |
|---|---|---|
| Filtrování | Where, OfType | Výběr prvků podle podmínky nebo typu. |
| Projekce | Select, SelectMany | Převod prvků nebo rozbalení. |
| Třídění | OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse | Řazení prvků. |
| Seskupování | GroupBy | Seskupení prvků podle klíče. |
| Spojení | Join, GroupJoin | Spojení prvků z různých zdrojů. |
| Agregace | Count, LongCount, Sum, Average, Min, Max, Aggregate | Výpočet agregovaných hodnot. |
| Kvantifikátory | All, Any, Contains, SequenceEqual | Kontrola přítomnosti nebo shody prvků s podmínkami. |
| Prvky | First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty | Získání jednotlivých prvků. |
| Rozdělení | Take, Skip, TakeWhile, SkipWhile | Výběr nebo přeskočení prvků. |
| Konverze | ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable | Převod na jiné typy kolekcí. |
| Generování | Range, Repeat | Vytváření posloupností. |
| Množiny | Distinct, Union, Intersect, Except | Operace nad množinami. |
| Spojení | Zip | Spojení prvků ze dvou posloupností. |
LINQ výrazně zjednodušuje a zpřehledňuje kód pro práci s daty v C#.