1 / 15

LINQ (1)

LINQ (1). LINQ ( L anguage In tegrated Q uery) 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 #

rhys
Download Presentation

LINQ (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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. 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<T> • XML • SQL databázích

  3. 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: vardistance = 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. LINQ(4) • inicializátorů kolekcí: • dovolují v době volání konstruktoru kolekce uvést seznam objektů • kolekce musí implementovat rozhraní IEnumerablea obsahovat metodu Add pro vložení položky • příklad:IList<int> nums=newList<int>(){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. LINQ(5) • lze je deklarovat jen pomocí implicitně typované proměn-né(var) • vlastnosti se určí z objektové inicializace • příklad: varRex=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. 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<T> • 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. 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<T>) • 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. 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. 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. 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. 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. 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áprvkydokud není splněna určitá podmínka • SkipWhile: • přeskakuje prvky, dokud není splněna určitá podmínka

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

  14. 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 < 4). OrderByDescending(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. LINQ to Objects (9) • Příklad:List<int> numbers = new List<int>(){1,2,3,4,5}; varresult = fromninnumberswheren > 3selectn; numbers.Add(6); foreach(int i inresult) Console.Write("{0} ", i); • Uvedený program, vypíšehodnoty 4 5 6

More Related