Obsah
LINQ (Language Integrated Query)
LINQ umožňuje psát dotazy pro různé typy dat bez nutnosti opouštět syntaxi C#. Namísto psaní SQL dotazů jako textových řetězců využíváte plnou podporu kompilátoru a IntelliSense.
1. Hlavní výhody LINQ
- Deklarativní styl: Programátor definuje, co chce získat, nikoliv jak se k tomu má dopracovat (cykly a podmínky řeší LINQ interně).
- Typová bezpečnost: Chyby v dotazu odhalí kompilátor, nikoliv až běžící aplikace.
- Jednotnost: Stejný dotaz můžete použít pro pole v paměti i pro tabulku v SQL databázi.
—
2. Dva styly zápisu dotazů
LINQ nabízí dvě cesty, jak dotaz zformulovat. Jsou funkčně rovnocenné a lze je kombinovat.
A) Query Syntax (SQL-like)
Tento styl připomíná SQL a je často čitelnější pro složité dotazy.
var dospeliUzivatele = from u in uzivatele
where u.Vek >= 18
orderby u.Prijmeni
select u.Jmeno;
B) Method Syntax (Lambda výrazy)
Využívá extension metody a lambda výrazy. Je stručnější a v praxi o něco častěji používaný.
var dospeliUzivatele = uzivatele
.Where(u => u.Vek >= 18)
.OrderBy(u => u.Prijmeni)
.Select(u => u.Jmeno);
—
3. Nejpoužívanější operátory
| Operátor | Účel |
|---|---|
| Where | Filtrování prvků podle podmínky. |
| Select | Transformace (projekce) prvků na nový formát. |
| OrderBy | Vzestupné řazení dat. |
| GroupBy | Seskupení prvků podle určitého klíče. |
| First/FirstOrDefault | Vrátí první prvek kolekce (nebo null, pokud je prázdná). |
| ToList/ToArray | Okamžité vykonání dotazu a převod na konkrétní kolekci. |
—
4. Odložené vykonávání (Deferred Execution)
Toto je klíčový koncept LINQ. Dotaz se nevykoná ve chvíli, kdy ho definujete, ale až ve chvíli, kdy začnete k jeho výsledkům přistupovat (např. v cyklu `foreach`).
To umožňuje efektivní práci s daty – dotaz můžete postupně skládat a on se provede jako jeden optimalizovaný celek až v momentě potřeby.
—
5. Poskytovatelé LINQ
Podle toho, na jaká data se dotazujete, používá .NET různé „poskytovatele“:
- LINQ to Objects: Pro práci s `IEnumerable` (Listy, Pole).
- LINQ to Entities: Pro práci s databázemi přes Entity Framework Core.
- LINQ to XML: Pro moderní zpracování XML dokumentů.
Související články:
Tagy: programming dot-net csharp linq data-querying development
