08/04/20151 Události (1) Členy třídy umožňující objektu nebo třídě rea- govat na zprávy (události) Dovolují třídě nebo objektu informovat jinou třídu nebo.

Slides:



Advertisements
Podobné prezentace
(instance konkrétní třídy)
Advertisements

Aplikační a programové vybavení
VISUAL BASIC Práce se soubory.
Fakulta elektrotechniky a informatiky
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Práce se soubory. Ukládání dat Textové soubory s jednoduchou strukturou (např..txt a.csv) textové soubory s vnitřní hierarchií (např..xml) Soubory binárního.
C# pro začátečníky Mgr. Jaromír Osčádal
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Programování v C++ Cvičení.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Práce se soubory. * soubory patří k základním datovým prvkům v počítači * převážná většina programovacích jazyků má podporu určité formy práce se soubory.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
PRÁCE S PROUDY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
C# - znakové typy a řetězce
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Ing. Josef Veselý Označení šablony a vzdělávací sady viz.rozpis.
Algoritmy a programovací techniky
C# - Exceptions (výjimky)
Objektové programování
Datové typy a práce s nimi
08/04/20151 Delegáty (1) Delegát (delegate) je datový typ, který definuje signaturu metody Delegáty bývají rovněž označovány jako typo- vě bezpečné ukazatele.
6. cvičení Polymorfismus
SQL – základní pojmy Ing. Roman Danel, Ph.D.
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
C# - I/O, streamy, práce se soubory
JavaScript Podmínky, cykly a pole.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
11/04/20151 Soubory a proudy (1) Soubor (file) označuje pojmenovanou sadu dat uloženou na externím záznamovém médiu (např. HDD, CD, DVD, BD, tape) Proud.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
12/04/20151 Kolekce (1) Kolekce (collection) představují standardní datové struktury (seskupení) prvků (objektů) Jsou definovány ve jmenném prostoru System.Collections.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Gymnázium prof. Jana Patočky Jindřišská Praha 1 „Praha & EU: Investujeme do vaší.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
Sedmé cvičení Soubory Vstupně/výstupní proudy. Java cv72 Soubory Třída File Objekt popisující soubor na filesystému Nedá se z něho přímo číst a psát Představuje.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
Šesté cvičení Výjimky Balíky.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Aplikační a programové vybavení
1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.
Textové soubory Vytváření a zpracování textových souborů.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Databázové systémy Přednáška č. 5 Datové typy a Fyzická organizace dat.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
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-
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
Úvod do programování 8. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
Databáze MS ACCESS 2010.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Úvod do Pythonu – IO operace se soubory.
Výukový materiál zpracován v rámci projektu
Delegáty (1) Delegát (delegate) je datový typ, který definuje signaturu metody Delegáty bývají rovněž označovány jako typo-vě bezpečné ukazatele na funkce.
Soubory a proudy (1) Soubor (file) označuje pojmenovanou sadu dat uloženou na externím záznamovém médiu (např. HDD, CD, DVD, BD, tape) Proud (stream) představuje.
Informatika pro ekonomy přednáška 8
Databázové systémy a SQL
Oblast platnosti identifikátoru (1)
Typ pole (1) Proměnná typu pole představuje kolekci proměnných stejného datového typu, které mohou být označovány společným jménem (identifikátorem) Pole.
C# přehled vlastností.
Přednáška 9 Triggery.
Transkript prezentace:

08/04/20151 Události (1) Členy třídy umožňující objektu nebo třídě rea- govat na zprávy (události) Dovolují třídě nebo objektu informovat jinou třídu nebo objekt, že nastala nějaká změna (událost) Třída, která: –zasílá (vyvolává) událost se označuje jako publi- sher (vydavatel) –přijímá (obsluhuje) událost se nazývá subscriber (odběratel)

08/04/20152 Události (2) Pro události platí: –vydavatel udává, kdy událost nastane –odběratel stanovuje, jaká akce bude provedena jako odpověď na vzniklou událost (jako obsluha udá- losti) –událost může mít více odběratelů –odběratel může obsloužit více událostí od různých vydavatelů Bývají nejčastěji využívány v souvislosti s GUI k oznámení, že došlo k nějaké uživatelské akci (např. stisknutí tlačítka myši, výběr položky z menu apod.)

08/04/20153 Události (3) Program (třída) může definovat metody, které mají za úkol zpracovat příchozí události Metoda realizující zpracování (obsluhu) udá- losti se označuje jako tzv. event handler (ob- služná metoda) Události jsou v jazyce C# implementovány pomocí delegátů Parametry obslužné metody musí odpovídat definici delegáta, jež definuje její signaturu Metod obsluhujících události může být více

08/04/20154 Události (4) Odkaz na obslužnou metodu se: –do události vkládá pomocí operátoru += –z události odebírá pomocí operátoru -= Události se definují pomocí klíčového slova event, za nímž následuje typ delegáta asocio- vaného s touto událostí a název události Příklad: public delegate void EventHandler(object sender, EventArgs e) public event EventHandler Click; Třídy, které chtějí na vzniklou událost reago- vat, musí delegáta tohoto typu vytvořit a aso- ciovat k němu obslužnou metodu

08/04/20155 Události (5) Konvence: –delegát události by měl mít: dva parametry: –objekt, který událost vyvolal –parametr typu třída EventArgs (nebo typu třída, která je ze třídy EventArgs odvozená), jež může specifikovat další infor- mace pro obslužnou metodu návratový typ void –obvykle se používá delegát EventHandler Před vyvoláním události by se vždy mělo ově- řit, zda člen události nenabývá hodnoty null tj. otestovat, zda událost má asociovánu obsluž- nou metodu

08/04/20156 Události (6) Poznámka: –ke každé události bývá zvykem vytvořit chráněnou virtuální metodu (OnNázevUdálosti), která danou událost vyvolá –příklad: protected virtual void OnClick (EventArgs e) { EventHandler handler = Click; if (handler != null) handler(this, e); } –klíčové slovo protected označuje člena třídy, který je dostupný pouze v dané třídě a v třídách, které jsou z této třídy odvozené

08/04/20157 Soubory a proudy (1) Soubor (file) označuje pojmenovanou sadu dat uloženou na externím záznamovém médiu (např. HDD, CD, DVD, BD, tape) Proud (stream) představuje „prostředníka“ mezi zdrojem, resp. příjemcem dat (např. soubor) a našim programem Knihovny dodávané s MS.NET Frameworkem poskytují abstraktní třídu Stream (definována ve jmenném prostoru System.IO ), jež mimo jiné definuje abstraktní metody pro operace: –čtení z proudu – Read –zápis do proudu – Write –přesun v proudu – Seek

08/04/20158 Soubory a proudy (2) Skutečnost, zda daná operace je na konkrétním proudu dostupná, lze ověřit pomocí vlastností CanRead, CanWrite a CanSeek V jazyku C# lze pracovat např. s proudy: –FileStream ( System.IO ): pro práci se soubory –MemoryStream ( System.IO ): pro práci s proudy uloženými v operační paměti –NetworkStream ( System.Net.Sockets ): pro komunikaci v prostředí počítačové sítě Poznámka: –výše uvedené proudy jsou definovány jako potomci abstraktní třídy Stream

08/04/20159 Třída FileStream (1) Instance třídy FileStream se používají ke čtení a k úpravám obsahu souboru Při vytváření instance třídy FileStream je možné konstruktoru předat např.: –název souboru (možno zadat včetně cesty) –informace o režimu otevření souboru ( FileMode ): např. vytvoření nového souboru, otevření existujícího souboru, přidávání dat na konec souboru –informace o režimu přístupu ( FileAccess ): soubor určený pro čtení, pro zápis nebo pro čtení i zápis –informace o režimu sdílení ( FileShare ): udávají, zda je soubor určený výlučně pro daný proud, nebo jej současně mohou (pro specifikované operace) používat i jiné proudy

08/04/ Třída FileStream (2) Definuje např. vlastnosti: –Length : vrací počet bytů v proudu –Position : vrací nebo nastavuje aktuální pozici v proudu Načítání informací z proudu (souboru) se pro- vádí pomocí metody: int Read(byte[] a, int offset, int count) Metoda Read : –načítá do pole a od indexu offset nejvýše count bytů –vrací počet načtených bytů (nebo nulu, jestliže bylo dosaženo konce proudu)

08/04/ Třída FileStream (3) –posouvá současnou pozici v proudu za poslední načtený byte Zápis informací lze realizovat pomocí metody void Write(byte[] a, int offset, int count) Metoda Write : –zapisuje do proudu z pole a od indexu offset count bytů –posouvá současnou pozici v proudu za poslední zapsaný byte Pro načtení, resp. zápis jednoho bytu je možné použít metodu ReadByte, resp. WriteByte

08/04/ Třída FileStream (4) Pro nastavení aktuální pozice v proudu slouží metoda long Seek(long offset, SeekOrigin origin) Parametr: –offset : udává relativní pozici vzhledem k hodnotě parametru origin –origin : specifikuje, zda pozice je vztažena k začátku, konci nebo aktuální pozici v proudu Metoda Seek vrací novou pozici v proudu Po dokončení práce se souborem by měl být příslušný proud uzavřen

08/04/ Třída FileStream (5) Soubory lze uzavřít voláním metody Close Metodu Close není nutné volat: –stačí zajistit, aby každý proud byl korektně uvolněn –je zapotřebí, aby proud byl uzavřen za všech okol- ností Za účelem uvolňování zdrojů existuje rozhraní IDisposable definující metodu Dispose, která příslušný zdroj uvolní Při práci se soubory by měly být použity bloky try a finally sloužící pro ošetření výjimek

08/04/ Třída FileStream (6) Příklad : FileStream fs; try { fs = new FileStream(”data.txt”); fs.Write(…); } finally { if (fs != null) fs.Dispose(); } Jazyk C# umožňuje zjednodušit použití rozhra- ní IDisposable pomocí klíčového slova using

08/04/ Třída FileStream (7) Příklad : using (FileStream fs = new FileStream(”data.txt”)) { fs.Write(…); } Pro čtení (zápis) z (do) proudů je možné také využít třídy: –BinaryReader, BinaryWriter : pracují s otevřeným proudem (přístupným pomocí vlastnosti BaseStream ) jako s binárním souborem dovolují číst (zapisovat) vestavěné datové typy –StreamReader, StreamWriter : pracují s otevřeným proudem (přístupným pomocí vlast- nosti BaseStream ) na úrovni znaků textu v nějakém kódování (standardně UTF-8) umožňují s obsahem souboru pracovat jako s textem

08/04/ Třída BinaryReader Definována ve jmenném prostoru System.IO Umožňuje načítání binárních hodnot Pro vytvoření její instance je zapotřebí mít otevřený proud Poskytuje zejména metody pro načítání hodnot vestavěných datových typů: –ReadBoolean, ReadByte, ReadChar, ReadDecimal, ReadDouble, ReadInt16, ReadInt32, ReadInt64, ReadSByte, ReadSingle, ReadString, ReadUInt16, ReadUInt32, ReadUInt64 Po každém načtení se pozice v proudu posune za poslední načtený byte

08/04/ Třída BinaryWriter Definována ve jmenném prostoru System.IO Umožňuje zápis binárních hodnot Pro vytvoření její instance je zapotřebí mít otevřený proud Obsahuje 18x přetíženou metodu Write pro zápis různých vestavěných typů do proudu Při každém zápisu se automaticky posouvá pozice v proudu za poslední (zapsaný) byte Změnu aktuální pozice v proudu je možné provést i pomocí metody Seek

08/04/ Třída StreamReader (1) Definována ve jmenném prostoru System.IO Potomek abstraktní třídy TextReader Načítá znaky z proudu Načítání je možné realizovat pomocí metody: –int Read() : načítá z proudu jeden znak reprezentovaný jako Int32 posunuje pozici v proudu za načtený znak –int ReadBlock(char[] buffer, int index, int count) : načítá do pole buffer od indexu index nejvýše count znaků vrací počet načtených bytů posunuje pozici v proudu za poslední načtený znak

08/04/ Třída StreamReader (2) –string ReadLine() : načítá z proudu řádek znaků a vrací jej jako řetězec –string ReadToEnd() : načítá z proudu všechny znaky od aktuální pozice až do jeho konce (vrací je jako řetězec)

08/04/ Třída StreamWriter Definována ve jmenném prostoru System.IO Potomek abstraktní třídy TextWriter Zapisuje znaky do proudu Zapisování je možné realizovat pomocí přetíže- ných metod: –Write() : zapisují data různých datových typů (v závislosti na pře- tížené variantě) do proudu –WriteLine() : zapisují data různých datových typů (v závislosti na pře- tížené variantě) do proudu za poslední zapsaný znak zapisují symbol konce řádku

08/04/ Třídy StringReader a StringWriter Definovány ve jmenném prostoru System.IO Třída: –StringReader je potomkem třídy TextReader –StringWriter je potomkem třídy TextWriter Umožňují práci obdobným způsobem jako třídy StreamReader a StreamWriter Operace však neprobíhají nad proudy (soubory), ale nad řetězci Vhodné pro práci s textovými informacemi ulo- ženými v operační paměti

08/04/ Manipulace se soubory K provádění operací se soubory (vytváření, ko- pírování, mazání, přesouvání, otevírání apod.) je možné využít třídy: –File ( System.IO ): statická třída, která definuje statické metody, např.: Copy, Create, Delete, Exists, GetAttributes, GetCreationTime, Move, Open, SetAttributes, SetCreationTime –FileInfo ( System.IO ): definuje: –vlastnosti, např.: Attributes, CreationTime, DirectoryName, Exists, Extension, Length, Name –instanční metody, např.: CopyTo, Create, Delete, MoveTo, Open

08/04/ Manipulace s adresáři K provádění operací s adresáři (vytváření, mazá- ní, přesouvání, zjišťování souborů a podadresářů v adresáři apod.) je možné využít třídy: –Directory ( System.IO ): statická třída, která definuje statické metody, např.: CreateDirectory, Delete, Exists, GetCreationTime, GetCurrentDirectory, GetDirectories, GetFiles, GetLogicalDrives, Move, SetCreationTime, SetCurrentDirectory –DirectoryInfo ( System.IO ): definuje: –vlastnosti, např.: Attributes, CreationTime, Exists, Extension, Name –instanční metody, např.: Create, CreateSubDirectory, Delete, GetDirectories, GetFiles, MoveTo

08/04/ Třída Path Statická třída, která provádí operace nad řetězci, jež obsahují informace o adresářových (soubo- rových) cestách Definuje statické metody, např.: –ChangeExtension : mění příponu –Combine : vytváří z pole řetězců cestu –GetExtension : vrací příponu –GetFileName : vrací jméno a příponu –GetFileNameWithoutExtension : vrací jméno bez přípony –GetRandomFileName : vrací náhodné jméno souboru nebo adresáře

08/04/ 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

08/04/ 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

08/04/ 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 ( var ) –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 –lambda výrazů: jednodušší forma zápisu anonymních metod –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 };

08/04/ 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říklady: List nums = new List { 1, 2, 3, 4, 5 }; List dogs = new List { new Dog { Name = ”Rex”, Age = 5 }, new Dog { Name = ”Don”, Age = 2 }, new Dog { Name = ”Caesar”, Age = 7 } };

08/04/ LINQ (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í 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 }; Překlad z dotazu LINQ na dotaz pro konkrétní platformu je realizovaný pomocí tzv. LINQ (po- skytovatelů) providers

08/04/ 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

08/04/ 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

08/04/ 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

08/04/ 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

08/04/ 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

08/04/ 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ů

08/04/ 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

08/04/ 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í

08/04/ 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á

08/04/ 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

08/04/ Rozšiřující přednášky Datum: Vyučující: Bc. Radim Göth Téma: Úvod do Entity Frameworku a ASP.NET MVC Datum: Vyučující: David Kadlec Téma: Praktická ukázka ASP.NET Web Forms