Hva er en språkintegrert spørring?
Språkintegrert spørring (LINQ) gir muligheten til sømløst å integrere deklarativt spørresyntax i imperative språk, først og fremst C # og VB.NET. Utviklingen av LINQ løste problemene utviklere som arbeider i objektorienterte miljøer oppstod når de utførte spørsmål. Den ble introdusert som en del av Microsoft® .NET Framework versjon 3.5 i november 2007, og i Visual Studio® kodenavn "Orcas."
Før opprettelsen av språkintegrert spørring, hadde NET-språk ingen egen måte å spørre relasjonsdatabaser eller XML-dokumenter på. Utviklere som skrev på disse språkene, måtte legge inn henholdsvis SQL eller XQuery som strenger, og manuelt kartlegge resulterende data til .NET-objekter. Innebygde spørringsstrenger og kartlegginger kunne ikke valideres av .NET-kompilatorer, slik at potensielle feil kan oppdages ved kjøretid.
Et annet problemutviklere møtte før språkintegrert spørring var at .NET-språk bare hadde objektorientert syntaks til spørresamlinger om .NET-objekter. Vanligvis vil utvikleren iterere over en hel kildesamling og bygge nye resultatsamlinger basert på søkekriterier. Utvikleren kunne også transformere dataene mens han bygger resultatsamlingene. Denne tilnærmingen var tungvint; et enkelt valg av spørsmål skrevet i C # eller VB vil kreve minst fem linjer med kode, mens den samme spørringen krever en kodelinje på et spørrespråk.
Utfordringene med å spørre i et objektorientert miljø ga Microsoft drivkraft til å lage LINQ. LINQ gir en syntaks for søk som minner om SQL som skal brukes på linje med C # eller VB, komplett med statisk kontroll. Når du spør om .NET-samlinger, i stedet for å bruke nestede løkker, kan utviklere bruke LINQ-syntaks for å velge elementer og transformere data. Blant andre fordeler resulterer dette i færre kodelinjer sammenlignet med rent objektorientert syntaks.
Når du får tilgang til eksterne datakilder, fjerner LINQ og støttende komponenter behovet for innebygde spørrespråk og datakartlegginger i et .NET-språk i seg selv. For å utføre datakartlegging, avhenger LINQ av komponenter som kalles LINQ-leverandører. LINQ-to-Objects er aksjeselskapet som gjør det mulig for LINQ å få tilgang til .NET-samlinger. Tilsvarende er det tilbydere som får tilgang til relasjonsdatabaser og XML-dokumenter. De fleste av disse leverandørene er tredjepartskomponenter som ikke er inkludert i .NET Framework. Uansett hvilken leverandør som brukes, bruker alle spørsmål den samme LINQ-syntaks.
Mellom språkintegrert spørringssyntaks og leverandørene er et bibliotek med spørringsoperatører lagt til .NET Framework som en del av LINQ-fasilitetene. Disse operatørene utfører slike oppgaver som filtrering, bestilling, angitt teorioperasjoner og aggregering. Siden disse operatørene er en del av .NET Framework, kan de også brukes uten LINQ hvis utvikleren velger det.