Kas yra kalbos integruota užklausa?

Kalbos integruota užklausa (LINQ) suteikia galimybę sklandžiai integruoti deklaratyviosios užklausos sintaksę į būtinas kalbas, pirmiausia C# ir VB.NET. LINQ kūrimas išsprendė problemas, su kuriomis susiduria kūrėjai, dirbantys objektinėje aplinkoje, vykdydami užklausas. Jis buvo pristatytas kaip Microsoft® .NET Framework 3.5 versijos dalis 2007 m. lapkritį ir Visual Studio® kodiniu pavadinimu „Orcas“.

Prieš sukuriant integruotą kalbų užklausą, .NET kalbos neturėjo savo būdo pateikti užklausų reliacinėse duomenų bazėse ar XML dokumentuose. Kūrėjai, rašantys šiomis kalbomis, turėjo atitinkamai įterpti SQL arba XQuery kaip eilutes ir rankiniu būdu susieti gautus duomenis į .NET objektus. .NET kompiliatoriai negalėjo patvirtinti įterptųjų užklausų eilučių ir susiejimo, todėl vykdymo metu galima aptikti galimas klaidas.

Kita problema, su kuria kūrėjai susidūrė prieš kalbėdami integruotą užklausą, buvo ta, kad .NET kalbos turėjo tik į objektus orientuotą sintaksę .NET objektų užklausoms. Paprastai kūrėjas kartoja visą šaltinio rinkinį, kurdamas naujas rezultatų kolekcijas pagal paieškos kriterijus. Kurdamas rezultatų rinkinius kūrėjas taip pat gali pakeisti duomenis. Šis metodas buvo sudėtingas; paprasta pasirinkimo užklausa, parašyta C# arba VB kalbomis, reikalauja mažiausiai penkių kodo eilučių, o tai pačiai užklausai reikia vienos kodo eilutės užklausos kalba.

Užklausų objekto aplinkoje iššūkiai suteikė „Microsoft“ impulsą sukurti LINQ. LINQ pateikia užklausos sintaksę, primenančią SQL, kuri turi būti naudojama kartu su C# arba VB, kartu su statiniu tipo tikrinimu. Teikdami užklausą .NET rinkiniuose, užuot naudoję įdėtąsias kilpas, kūrėjai gali naudoti LINQ sintaksę elementams pasirinkti ir duomenims transformuoti. Be kitų pranašumų, tai lemia mažiau kodo eilučių, palyginti su grynai į objektą orientuota sintaksė.

Kai pasiekiate išorinius duomenų šaltinius, LINQ ir pagalbiniai komponentai pašalina įterptųjų užklausų kalbų ir duomenų susiejimo poreikį pačioje .NET kalboje. Kad galėtų atlikti duomenų atvaizdavimą, LINQ priklauso nuo komponentų, vadinamų LINQ teikėjais. LINQ-to-Objects yra atsargų tiekėjas, leidžiantis LINQ pasiekti .NET rinkinius. Panašiai yra tiekėjų, galinčių pasiekti reliacines duomenų bazes ir XML dokumentus. Dauguma šių teikėjų yra trečiųjų šalių komponentai, neįtraukti į .NET Framework. Nepriklausomai nuo naudojamo teikėjo, visos užklausos naudoja tą pačią LINQ sintaksę.

Tarp kalbos integruotos užklausos sintaksės ir teikėjų yra užklausų operatorių biblioteka, įtraukta į .NET Framework kaip LINQ priemonių dalis. Šie operatoriai atlieka tokias užduotis kaip filtravimas, tvarka, rinkinių teorijos operacijos ir agregavimas. Kadangi šie operatoriai yra .NET Framework dalis, jie taip pat gali būti naudojami be LINQ, jei kūrėjas taip pasirenka.