Co jsou to kolekce objektů?
Kolekce objektů (List<>) jsou specializované datové struktury, které slouží k seskupování a správě většího množství souvisejících objektů [1]. Umožňují efektivně ukládat data, ke kterým potřebujeme přistupovat hromadně, a v souladu se správnými programátorskými praktikami nabízejí nástroje pro jejich třídění či prohledávání [2]. Hlavní myšlenkou kolekcí je flexibilita a dynamická velikost – na rozdíl od klasických polí (arrays) se velikost kolekce automaticky přizpůsobuje, můžeme do ní za běhu programu libovolně přidávat nebo odebírat položky a následně je snadno vykreslit v uživatelském rozhraní [1].
V jazyce C# a na platformě .NET [3] se kolekce nejčastěji definují pomocí generické třídy List<T>, kde T nahrazujeme konkrétním typem objektu. Zápis List<Uzivatel>
seznam = new List<Uzivatel>(); říká kompilátoru: "Vytvoř nový dynamický seznam, do kterého budeme moci vkládat pouze objekty typu Uživatel" [3].
Základní metody a vlastnosti
Metoda Add() – metoda, která přidává nový objekt na konec kolekce [1]. Pokud seznam ještě neexistoval (nebo přesáhl svou původní kapacitu), automaticky se zvětší. Zapisujeme způsobem nazevSeznamu.Add(novyObjekt);.
Metoda Remove() – metoda, která vyhledá konkrétní objekt v seznamu a odstraní ho [3]. Ostatní prvky se po odstranění posunou, aby v seznamu nevznikla mezera. Zapisujeme způsobem nazevSeznamu.Remove(objekt);.
Vlastnost Count – vlastnost, která vrací aktuální počet položek uložených v kolekci [1]. Slouží k rychlé kontrole, zda je seznam prázdný nebo kolik obsahuje dat. Zapisujeme způsobem nazevSeznamu.Count.
Metoda Clear() – metoda, která okamžitě odstraní všechny položky ze seznamu a velikost kolekce vrátí na nulu [3]. Zapisujeme způsobem nazevSeznamu.Clear();.
Metoda Where() – vyfiltruje prvky z kolekce na základě zadané podmínky a vrátí jen ty, které ji splňují. Zapisujeme například kolekce.Where(x => x.Cena > 1000);.
Metody OrderBy() a OrderByDescending() – slouží k řazení prvků. OrderBy() řadí vzestupně, zatímco OrderByDescending() sestupně (od největšího).
Metoda Select() – takzvaná projekce. Umožňuje z celého složitého objektu "vytáhnout" pouze konkrétní vlastnost (např. pouze název) a vytvořit z ní novou, zjednodušenou kolekci. Zapisujeme kolekce.Select(x => x.Nazev);.
Metoda GroupBy() – rozdělí velkou kolekci do několika menších podskupin na základě společného klíče (např. produkty podle kategorie). Zapisujeme například kolekce.GroupBy(x => x.Kategorie);.
Metoda FirstOrDefault() – najde a vrátí první objekt, který splňuje danou podmínku (např. shodu ID). Pokud ho nenajde, vrátí hodnotu null, čímž zabrání pádu aplikace. Zapisujeme například kolekce.FirstOrDefault(x => x.Id == 3);.
Metoda Any() – zkontroluje seznam a vrátí logickou hodnotu true, pokud alespoň jeden prvek splňuje zadanou podmínku (jinak false). Zapisujeme například kolekce.Any(x => x.Cena > 10000);.
Agregační metody (Sum, Average, Min, Max) – slouží k rychlým matematickým výpočtům nad kolekcí. Sum() vypočítá celkový součet, Average() průměr, Min() nejmenší a Max() nejvyšší hodnotu specifikované vlastnosti.
Metoda ToList() – většina LINQ příkazů vrací specifický datový typ. Přidáním této metody na úplný konec dotazu se výsledek převede zpět na klasický seznam, se kterým už bezpečně umíme pracovat. Zapisujeme .ToList();.