Sobes.tech
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);
      
  • 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#.