Uživatelské nástroje

Nástroje pro tento web


it:sw:linq

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

it/sw/linq.txt · Poslední úprava: autor: admin