Lekce 16: Lambda výrazy a LINQ – Efektivní manipulace s kolekcemi v C#

Lekce 16: Lambda výrazy a LINQ – Efektivní manipulace s kolekcemi v C#

Lambda výrazy a jazykově integrovaný dotazovací systém (LINQ, Language Integrated Query) jsou jedny z nejsilnějších nástrojů jazyka C#. Tyto koncepty umožňují psát čitelnější, kompaktnější a efektivnější kód při práci s kolekcemi a daty. V této lekci si podrobně vysvětlíme, co jsou lambda výrazy, jak fungují LINQ dotazy, a jak je kombinovat pro manipulaci a filtrování dat.


1. Lambda výrazy v C#

Lambda výrazy jsou stručný způsob, jak zapisovat anonymní metody, které lze přiřadit delegátům nebo použít v rámci LINQ dotazů. Mají následující základní formát:

(parametry) => výraz nebo blok kódu

Jednoduchý příklad lambda výrazu

Func<int, int> nasobDva = x => x * 2;
Console.WriteLine(nasobDva(5));  // Výstup: 10

V tomto příkladu je nasobDva delegát typu Func<int, int>, který přijímá jeden parametr a vrací výsledek jeho násobení dvěma.

Lambda výrazy s více parametry

Func<int, int, int> scitej = (a, b) => a + b;
Console.WriteLine(scitej(3, 7));  // Výstup: 10

2. LINQ v C#

LINQ je vestavěná funkcionalita C#, která umožňuje psát dotazy na kolekce podobně jako SQL dotazy na databáze. LINQ funguje s různými zdroji dat, včetně kolekcí, XML, databází a dalších.

Základní syntaxe LINQ dotazu

LINQ dotazy lze zapisovat dvěma způsoby:

  1. Dotazovací syntaxe (Query Syntax)
  2. Metodová syntaxe (Method Syntax)

Dotazovací syntaxe:

int[] cisla = { 1, 2, 3, 4, 5, 6 };
var sudych = from cislo in cisla
             where cislo % 2 == 0
             select cislo;

foreach (var cislo in sudych)
{
    Console.WriteLine(cislo);
}

Metodová syntaxe:

var sudych = cisla.Where(cislo => cislo % 2 == 0);
foreach (var cislo in sudych)
{
    Console.WriteLine(cislo);
}

Obě syntaxe vrátí sudá čísla z pole cisla.


3. Kombinace lambda výrazů a LINQ

Kombinace lambda výrazů a LINQ je výkonný nástroj pro manipulaci s kolekcemi. Pomocí lambda výrazů můžeme zapisovat metody jako Where, Select, OrderBy, atd.

Filtrování dat pomocí Where

List<int> cisla = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var sudaCisla = cisla.Where(x => x % 2 == 0);

foreach (var cislo in sudaCisla)
{
    Console.WriteLine(cislo);  // Výstup: 2, 4, 6, 8
}

Transformace dat pomocí Select

Metoda Select umožňuje transformaci každého prvku kolekce na jiný formát nebo hodnotu.

var kvadraty = cisla.Select(x => x * x);

foreach (var kvadrat in kvadraty)
{
    Console.WriteLine(kvadrat);  // Výstup: 1, 4, 9, 16, ...
}

4. Pokročilé použití LINQ

Seřazení dat pomocí OrderBy

var sestupne = cisla.OrderByDescending(x => x);

foreach (var cislo in sestupne)
{
    Console.WriteLine(cislo);  // Výstup: 9, 8, 7, ...
}

Skupinování dat pomocí GroupBy

var skupiny = cisla.GroupBy(x => x % 2 == 0 ? "Sudá" : "Lichá");

foreach (var skupina in skupiny)
{
    Console.WriteLine($"Skupina: {skupina.Key}");
    foreach (var cislo in skupina)
    {
        Console.WriteLine(cislo);
    }
}

5. LINQ to Objects vs. LINQ to SQL

  • LINQ to Objects: Pracuje s kolekcemi v paměti, jako jsou pole, seznamy a další kolekce.
  • LINQ to SQL: Umožňuje psát dotazy na relační databáze pomocí podobné syntaxe jako LINQ to Objects.

Příklad LINQ to SQL:

using (var context = new DatabazeContext())
{
    var studenti = from student in context.Studenti
                   where student.Vek > 20
                   select student;

    foreach (var student in studenti)
    {
        Console.WriteLine(student.Jmeno);
    }
}

6. Výhody použití lambda výrazů a LINQ

  • Čitelnost kódu: Dotazy jsou kompaktní a snadno čitelné.
  • Modularita: LINQ dotazy lze snadno kombinovat a rozšiřovat.
  • Flexibilita: Práce s různými zdroji dat (kolekce, databáze, XML).
  • Výkon: LINQ dotazy jsou optimalizovány pro efektivní zpracování dat.

Závěr

Lambda výrazy a LINQ jsou nezbytné nástroje pro vývojáře C#. Tyto koncepty zjednodušují práci s kolekcemi, umožňují rychlou manipulaci s daty a podporují modularitu a čitelnost kódu. Pochopení těchto nástrojů vám umožní vytvářet efektivní a udržovatelný kód pro moderní aplikace.

Jirka

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners. View more
Cookies settings
Accept
Privacy & Cookie policy
Privacy & Cookies policy
Cookie name Active

Kdo jsme

Naše webová adresa je: https://www.jefta.cz.

Komentáře

Když návštěvníci zanechají na webu komentáře, shromažďujeme údaje zobrazené ve formuláři pro komentáře a také IP adresu návštěvníka a řetězec uživatelského agenta prohlížeče, abychom pomohli odhalit spam.

Anonymizovaný řetězec vytvořený z vaší e-mailové adresy (také nazývaný hash) může být poskytnut službě Gravatar, abyste zjistili, zda ji používáte. Zásady ochrany osobních údajů služby Gravatar jsou k dispozici zde: https://automattic.com/privacy/. Po schválení vašeho komentáře bude váš profilový obrázek viditelný pro veřejnost v kontextu vašeho komentáře.

Média

Pokud na web nahráváte obrázky, měli byste se vyhnout nahrávání obrázků s vloženými údaji o poloze (EXIF GPS). Návštěvníci webu si mohou stáhnout a extrahovat jakákoli data o poloze z obrázků na webu.

Soubory cookie

Pokud na našem webu zanecháte komentář, můžete se přihlásit k ukládání svého jména, e-mailové adresy a webu do souborů cookie. Jsou pro vaše pohodlí, abyste nemuseli znovu vyplňovat své údaje, když zanecháte další komentář. Tyto cookies vydrží jeden rok.

Pokud navštívíte naši přihlašovací stránku, nastavíme dočasný soubor cookie, abychom zjistili, zda váš prohlížeč přijímá soubory cookie. Tento soubor cookie neobsahuje žádné osobní údaje a po zavření prohlížeče je vyřazen.

Když se přihlásíte, nastavíme také několik souborů cookie pro uložení vašich přihlašovacích údajů a vašich voleb zobrazení obrazovky. Přihlašovací soubory cookie vydrží dva dny a soubory cookie možností obrazovky vydrží rok. Pokud zvolíte "Zapamatovat si mě", vaše přihlášení bude trvat dva týdny. Pokud se odhlásíte ze svého účtu, přihlašovací soubory cookie budou odstraněny.

Pokud upravíte nebo publikujete článek, uloží se do vašeho prohlížeče další cookie. Tento soubor cookie neobsahuje žádné osobní údaje a pouze označuje ID příspěvku článku, který jste právě upravili. Jeho platnost vyprší po 1 dni.

Vložený obsah z jiných webových stránek

Články na tomto webu mohou obsahovat vložený obsah (např. videa, obrázky, články atd.). Vložený obsah z jiných webových stránek se chová úplně stejně, jako kdyby návštěvník navštívil jinou webovou stránku.

Tyto webové stránky mohou shromažďovat údaje o vás, používat soubory cookie, vkládat další sledování třetích stran a monitorovat vaši interakci s tímto vloženým obsahem, včetně sledování vaší interakce s vloženým obsahem, pokud máte účet a jste na dané webové stránce přihlášeni.

S kým sdílíme vaše údaje

Pokud požádáte o resetování hesla, vaše IP adresa bude zahrnuta v e-mailu pro resetování.

Jak dlouho vaše údaje uchováváme

Pokud zanecháte komentář, bude komentář a jeho metadata uchována po neomezenou dobu. Je to proto, abychom mohli rozpoznat a schválit jakékoli následné komentáře automaticky, místo abychom je drželi ve frontě na moderování.

Pro uživatele, kteří se zaregistrují na našich webových stránkách (pokud existují), ukládáme také osobní údaje, které poskytují, v jejich uživatelském profilu. Všichni uživatelé mohou kdykoli zobrazit, upravit nebo smazat své osobní údaje (kromě toho, že nemohou změnit své uživatelské jméno). Správci webových stránek mohou tyto informace také zobrazit a upravovat.

Jaká práva máte nad svými údaji

Pokud máte účet na této stránce nebo jste zanechali komentáře, můžete požádat o zaslání exportovaného souboru osobních údajů, které o vás uchováváme, včetně všech údajů, které jste nám poskytli. Můžete také požádat, abychom vymazali veškeré osobní údaje, které o vás uchováváme. To nezahrnuje žádné údaje, které jsme povinni uchovávat pro administrativní, právní nebo bezpečnostní účely.

Kam se posílají vaše data

Komentáře návštěvníků mohou být kontrolovány prostřednictvím služby automatické detekce spamu.

Save settings
Cookies settings