Sintaksa upita u LINQ
U prethodnim postovima vidjeli smo načine kako možemo formirati upit nad izvorom podataka. Takodjer se može primjetiti da svaki upit možemo formirati na dva, u suštini ista, a sintaktički različita načina. Naime svaki LINQ upit formiran Lambda izrazom možemo formirati tačka notacijom (Dot Notaton). Ovakav fleksibilam pristup definisanju upita u LINQ rezultat su proširenja koja se pojavljuju u novoj verziji C#, a koje smo spominjali u prethodnim postovima. Npr. definišimo LINQ upit tačka notacijom. Imamo:
var izraz= nazivi .Where(s=>s.Lenght==6) .OrderBy(s=>s) .Select(s=>s.ToUpper());
Prethodni upit možemo formirati Lambda izrazom na sljedeći način:
var izraz= from s in imena where s.Lenght ==6 orderby s select s.ToUpper();
Na kraju ovog dijela pobrojat ćemo sve operatore koji se mogu pojaviti u LINQ upitima:
OPERATOR | Opis |
Where | Restriktivni operator. |
Select / SelectMany | Operator projekcije. |
Take/SkipTakeWhile/SkipWhile | Parcijalni operator baziran na poziciji ili uslovnoj funkciji. |
Join/GroupJoin | Operator spajanja u odnosu na zadani uslov. |
Concat | Operator spajanja. |
OrderBy/ThenBy/OrderByDescendingThenByDescending | Sortiranje u uzlaznom, silaznom smijeru u odnosu na zadani uslov. |
Reverse | Operator sortiranja sekvence u suprotnom smijeru |
GroupBy | Operator grupiranja u odnosu na zadani uslov. |
Distinct | Operator uklanjanja duplikata elemenata u skupu. |
Union/Intersect | Operator koji vraća uniju ili podskup zadanih skupova elemenata. |
Except | Operator koji vraća komplement zadanog skupa. |
ToSequence | Operator konverzije u IEnumerable<T> |
ToArray/ToList | Operator konverzije u List<T> |
ToDictionary/ToLookup | Operator konverzije u Dictionary<K,T> ili LookUp<K,T> u odnosu na zadani ključ. |
OfType/Cast | Operator konverzije u IEnumerable<T> u odnosu na filtrirane elemente ili konverzije u tip argumenta. |
EqualAll | Operator jednakosti koji vraća jedanake uparene elemente. |
First/FirstOrDefault/Last/LastOrDefault/Single/SingleOrDefault | Operator vraćanja početne/zadnje/jednog elementa u odnosu na zadanu funkciju. |
ElementAt/ElementAtOrDefault | Operator vraćanja elementa određene pozicije. |
DefaultIfEmpty | Operator zamjene prazne vrijednosti sa podrazumijevanom. |
Range | Generatorski operator vraćanja broja u opsegu. |
Repeat | Generatorski operator vraćanja višestrukih pojavljivanja elementa zadane vrijednosti. |
Empty | Generatorski operator vraćanja prazne sekvence. |
Any/All | Kvantifikator provjere egzistencije ili univerzalnosti funkcije izraza. |
Contains | Kvantifikator provjere postojanja datog elementa. |
Count/LongCount | Agregacijski operatori brojanja elemenata. |
Sum/Max/Min/Average | Agregacijski oparatori kao opcione funkcije selektora. |
Aggregate | Agregacijski oparator, vidi dio III |
Cjelokupan text u 5 dijelova koji je napisan o LINQ mozete skinuti odavde.