Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-

Podobné prezentace


Prezentace na téma: "23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-"— Transkript prezentace:

1 23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ- ním a funkcionálním způsobem Představuje dotazovací jazyk (podobný SQL), který je integrovaný přímo do syntaxe jazyka C# Poskytuje syntaktickou kontrolu dotazů v době překladu programu Mezi výhody technologie LINQ patří zejména: –zjednodušení a zpřehlednění programového kódu –jednotná forma práce s různě reprezentovanými daty

2 23/04/20152 LINQ (2) LINQ: –přináší nový způsob pro dotazování nad různě repre- zentovanými daty –usnadňuje: jejich třídění jejich propojování vyhledávání v nich Zpracovávaná data mohou být uložena např. v: –polích –kolekcích odvozených od generického rozhraní IEnumerable –XML –SQL databázích

3 23/04/20153 LINQ (3) Zpřehlednění práce s daty pomocí LINQ je v ja- zyku C# dosaženo prostřednictvím: –implicitně typovaných proměnných: definované pomocí klíčového slova var (bez použití identifikátoru označujícího datový typ) v době definice musí být provedena i jejich inicializace představují silně typované proměnné jejich typ je určen z pravé strany inicializace příklad: var distance = 20; //int –inicializátorů objektů: umožňují v době vytváření objektů nastavit jejich vlast- nosti a datové položky (bez nutnosti použití specifického konstruktoru) příklad: Dog dog = new Dog { Name = ”Rex”, Age = 5 };

4 23/04/20154 LINQ (4) –inicializátorů kolekcí: dovolují v době volání konstruktoru kolekce uvést seznam objektů kolekce musí implementovat rozhraní IEnumerable a obsahovat metodu Add pro vložení položky příklad: IList nums = new List () { 1, 2, 3, 4, 5 }; –anonymních typů: slouží k zapouzdření proměnných bez nutnosti deklarovat datový typ obsahují jednu nebo více vlastností, které se nastaví při vytvoření instance a dále slouží jen ke čtení

5 23/04/20155 LINQ (5) lze je deklarovat jen pomocí implicitně typované proměn- né ( var ) vlastnosti se určí z objektové inicializace příklad: var Rex = new { Name = "Rex", Age = 5 }; –lambda výrazů: jednodušší forma zápisu anonymních metod –rozšiřujících metod: metody rozšiřující již existující datové typy (třídy nebo struktury) dodatečnými statickými metodami Překlad z dotazu LINQ na dotaz pro konkrétní platformu je realizovaný pomocí tzv. LINQ (po- skytovatelů) providers

6 23/04/20156 LINQ (6) Mezi nejčastěji používané poskytovatele techno- logie LINQ patří: –LINQ to Objects: slouží k práci s libovolnou kolekcí (polem), která imple- mentuje rozhraní IEnumerable –LINQ to SQL: mapuje příkazy LINQ na dotazy SQL a umožňuje práci s MS SQL Server a MS SQL Express –LINQ to DataSet: používá technologii ADO.NET pro komunikaci s databá- zemi –LINQ to XML: umožňuje práci se (dotazy nad) soubory XML

7 23/04/20157 LINQ to Objects (1) Definován ve jmenném prostoru System.Linq Slouží k dotazování nad daty, která jsou v ope- rační paměti (poli, třídami implementujícími rozhraní IEnumerable ) Dotazovací engine je spuštěn spolu s programem a umožňuje lokální dotazování Odpadává nutnost vytváření vlastních algoritmů pro vyhledávání v kolekcích Dotazování není dynamické: –jakmile se jeden dotaz vyhodnotí a vrátí výslednou množinu, tak se do něj již nepromítají změny v pů- vodních datech

8 23/04/20158 LINQ to Objects (2) Pro zápis dotazů LINQ je možné použít např. následující operátory (klíčová slova): –from : první klíčové slovo dotazu slouží ke specifikaci datového zdroje, nad kterým je prováděn dotaz –where ( Where ): umožňuje definovat podmínku (restrikci) pro výsledek jestliže podmínka vrátí hodnotu true, tak je prvek zahrnut do výsledku –select ( Select ): produkuje výsledky dotazu používá se k implementaci projekce, kde jsou pouze něk- teré datové složky objektu použity ve výsledku uvádí se vždy na konci dotazu

9 23/04/20159 LINQ to Objects (3) –group ( GroupBy ): umožňuje seskupování prvků ve výsledku podle určitého klíče k použití tohoto slova se váže také použití klíčového slo- va by –into : používáno v kombinaci s klíčovým slovem group, join nebo select k uložení výsledku a další možné práci s tímto výsledkem –orderby ( OrderBy, OrderByDescending ): slouží k řazení prvků ve výsledku podle definovaných kritérií pro sestupné řazení je možné jej použít s klíčovým slovem descending

10 23/04/201510 LINQ to Objects (4) –join ( Join, GroupJoin ): používá se k propojení prvků z různých datových zdrojů na základě definované podmínky ekvivalence v kombinaci s tímto slovem se používají nová slova equals a on –let : slouží k definici lokální proměnné v rámci dotazu do této proměnné může být přiřazena sekvence elementů, nebo jednoduchá hodnota Jmenný prostor System.Linq definuje ještě další rozšiřující metody, které lze v souvislosti s kolekcemi (poli) používat, např.: –First, Last : výběr prvního nebo posledního prvku

11 23/04/201511 LINQ to Objects (5) –FirstOrDefault, LastOrDefault : vrací první, resp. poslední prvek výchozí hodnotu daného datového typu v případě, že dotaz vrátil prázdný výsledek –ElementAt : vrací prvek podle zadaného indexu –Count : vrací počet prvků –Union, Intersect, Except : provádí množinové operace (sjednocení, průnik a rozdíl) –Min, Max : vrací minimální, resp. maximální hodnotu –Sum, Average : vypočítá součet, resp. průměr prvků

12 23/04/201512 LINQ to Objects (6) –Reverse : obrátí pořadí prvků v kolekci (poli) –Concat : spojí dvě sekvence (pole, kolekce) dohromady –OfType : výběr pouze těch prvků, které jsou specifikovaného typu –Take : vybere prvních n prvků –Skip : vybere všechny prvky počínaje (n+1). prvkem –TakeWhile : Vybírá prvky dokud není splněna určitá podmínka –SkipWhile : přeskakuje prvky, dokud není splněna určitá podmínka

13 23/04/201513 LINQ to Objects (7) Obecný tvar jednoduchého dotazu LINQ: from [typ] proměnná in datový_zdroj [where] podmínka_restrikce [orderby] klíč_řazení [descending] select výraz_projekce; Příklad: int[] numbers = { 1, 2, 3, 4, 5 }; var result = from n in numbers where n < 4 orderby n descending select n; vybere z pole numbers všechna čísla menší než 4 a provede jejich sestupné seřazení

14 23/04/201514 LINQ to Objects (8) Předcházející dotaz může být také zapsán s vy- užitím rozšiřujících metod a lambda výrazů: int[] numbers = { 1, 2, 3, 4, 5 }; var result = numbers.Where(n => n n); Dotazy LINQ jsou prováděny s tzv. odloženým spuštěním (deferred execution): –dotaz je spuštěn až ve chvíli, kdy je k němu přistou- peno –samotné uložení dotazu do proměnné jeho spuštění nevyvolá

15 23/04/201515 LINQ to Objects (9) Příklad: List numbers = new List () {1, 2, 3, 4, 5}; var result = from n in numbers where n > 3 select n; numbers.Add(6); foreach (int i in result) Console.Write("{0} ", i); Uvedený program, vypíše hodnoty 4 5 6


Stáhnout ppt "23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-"

Podobné prezentace


Reklamy Google