Pyetësori i integruar në gjuhë programuese

LINQ është akronim për Language Integrated Query (Pyetësori i integruar në gjuhë programuese), që është komponent i Microsoft .NET Framework-ut . Pjesa e integrimit në gjuhë do të thotë se LINQ është pjesë e sintaksës së gjuhëve programuese. Më saktësisht, të dyja C# dhe VB (Visual Basic) janë gjuhë që vijnë me .NET platformën dhe kanë kapacitete për LINQ. Një gjuhë tjetër që e përkrah LINQ është Delphi Prism. LINQ përdoret për kërkim/analizim të shumë llojeve të të dhënave duke përfshirë databazat relacionale, XML, madje edhe objektet. Pra LINQ e zgjeron gjuhën me shtimin e shprehjeve të pyetësorve që janë shumë të ngjajshme me komandat në SQL, dhe mund të përdoren për të përshtatur, ekstraktuar dhe procesuar të dhëna nga vargjet, klasat, enum, etj.

Historia
LINQ është lëshuar si një pjesë kryesore e .NET Framework 3.5 më 19 nëntor, 2007.

Arkitektura e LINQ në .NET Framework
Operatorët standard për pyetësor (query)
Query operatorët standard janë një API (Application Programming Interface) që mundëson analizimin/kontrollimin e cilit do .NET vargu apo koleksioni. Operatorët standard për analizim/kërkim (query) në API përbëhen nga metoda të deklaruara në klasën statike System.Query.Sequence. Operatorët standard për analizim/kërkim janë metodat në modelin e Language Integrated Query (LINQ). Operatorët e përkrahur nga API janë:

Select
Operatori Select bën projeksionin e koleksionit për të zgjedhur vetitë e dëshiruara të elementeve.

Where
Operatori Where lejon definimin e një koleksioni të ri në bazë të një sërë regullash të predikateve të cilat vlejnë për objektet në koleksion, derisa objektet që nuk i përgjigjen atyre regullave filtrohen.

SelectMany
SelectMany mundëson selektimin e elementeve në koleksione brenda koleksioneve, duke e thjeshtuar strukturën mbajtëse.

Sum / Min / Max / Average
Këta operator përdorin funksione që kthejnë vlerë të caktuar numerike prej çdo elementi në koleksion dhe mund të i përdor ata për të gjetur shumën, minimumin, maksimumin apo vlerën mesatare të të gjith elementeve në koleksion.

Aggregate
Funskionet e gjeneralizuara si Shuma/Minimumi/Maksimumi. Ky operator merr një funksion që specifikon se si dy vlera kombinohen për të krijuar një rezultat. Vlera fillestare mund të theksohet duke lejuar që rezultati i agregimit të jetë arbitrar.

Join / GroupJoin
Operatori Join bën bashkimin e brendshëm e dy koleksioneve në baze të përputhjes së çelësave për secilin objekt në koleksion. GroupJoin lejon bashkimin e shumë anëtarëve në bazë të një çelësi nga koleksioni i parë.

Take / TakeWhile
Operatori Take selekton N objektet e para nga koleksioni, ndërsa operatori TakeWhile merr objekte përderisa predikati i cekur është i saktë.

Skip / SkipWhile
Operatoret Skip dhe SkipWhile janë e kundërta e Take dhe TakeWhile, këto i kalojnë N objektet e para të koleksionit apo ato përderisa predikati gjegjës vlen.

OfType
Ky operator përdoret për të selektuar elementet e tipit të kërkuar.

Concat
Operatori Concat i bashkon dy koleksione.

OrderBy / ThenBy
Operatori OrderBy përdoret për të specifikuar sortimin e elementeve në koleksion në baze të disa çelësave. Rradhitja e nenkuptuar është nga lart posht, forma e kundërt është operatori OrderByDescending. ThenBy operatori specifikon sortimin e ardhshëm të elementeve. 

Reverse
Operatori Reverse e kthen mbrapsht koleksionin.

GroupBy
Operatori GrouBy është funksion që lidh koleksione elementesh me çelësa të përbashkët.

Distinct
Operatori Distinct merr elementet e njejta vetëm nga një herë.

Union / Intersect / Except
Këta operator përdoren për të bërë unionin, prerjen dhe diferencën e dy koleksioneve.

SequenceEqual
Ky operator vendos nëse dy koleksione kane anëtar dhe radhitje të njejt.

First / FirstOrDefault / Last / LastOrDefault
Këta operator marrin predikate për të funksionuar. Operatori First kthen elementin e parë për të cilin predikati shënon true, apo nëse asnjë element nuk i përgjigjet predikatit hedh gabim (exception). Operatori FirstOrDefault është i ngjashëm me operatorin First vetëm se kthen vlerën e nënkuptuar të tipit (zakonisht referenca null) në rast se predikatit nuk i përshtatet asnje element. Operatori Last, kthen elementin e fundit që i përgjigjet predikatit nga koleksioni dhe LastOrDefault kthen vlerën e nënkuptuar nëse asnjë element nuk i përshtatet kërkesës.

Single
Operatori Single pranon një predikat dhe kthen elementet që i përshtaten kërkesës së atij predikati. Në rast se asnjë ose më shumë elemente i përgjigjen atëherë hedhet një gabim (exception).

SingleOrDefault
Kryen veprimin e njejtë sikur Single, përveq që kthen vlerën e nënkuptuar nëse asnjë element nuk i përgjigjet predikatit.

ElementAt
Operatori ElementAt kthen elementin në indeksin e dhënë.

Any / All / Contains
Operatori Any shqyrton nëse ka elemente në koleksion që i përgjigjen predikatit të shenuar. Ky nuk e selekton elementin por kthen True nesë së paku një element i përgjigjet predikatit. Operatori All kthen True në rast se të gjitha elementet i përgjigjen predikatit. Operatori. Contains shqyrton nëse koleksioni e përmban një element të dhënë.

Count
Operatori Count kthen numrin e elementeve të dhëna në koleksion.
 Referime