Hvad er en sprogintegreret forespørgsel?
Sprogintegreret forespørgsel (LINQ) giver mulighed for problemfrit at integrere deklarativ forespørgselssyntax i imperativsprog, primært C # og VB.NET. Udviklingen af LINQ løste de problemer, udviklere arbejder i objektorienterede miljøer, der blev stødt på, når de udførte forespørgsler. Det blev introduceret som en del af Microsoft® .NET Framework version 3.5 i november 2007 og i Visual Studio®-kodenavnet "Orcas."
Før oprettelsen af sprogintegreret forespørgsel, havde NET-sprog ingen oprindelig måde at forespørge relationelle databaser eller XML-dokumenter. Udviklere, der skrev på disse sprog, måtte integrere henholdsvis SQL eller XQuery som strenge og manuelt kortlægge resulterende data til .NET-objekter. Integrerede forespørgselsstrenge og kortlægninger kunne ikke valideres af .NET-compilere, hvilket muliggør, at der opdages potentielle fejl på kørselstidspunktet.
Et andet problemudviklere, der stod over for sprogintegreret forespørgsel, var, at .NET-sprog kun havde objektorienteret syntaks til forespørgselssamlinger af .NET-objekter. Typisk vil udvikleren iterere over en hel kildesamling og bygge nye resultatsamlinger baseret på søgekriterier. Udvikleren kunne også transformere dataene under opbygningen af resultatsamlingerne. Denne tilgang var besværlig; en simpel udvælgelsesforespørgsel skrevet i C # eller VB kræver mindst fem linjer med kode, mens den samme forespørgsel kræver en kodelinje i et forespørgselssprog.
Udfordringerne med forespørgsel inden for et objektorienteret miljø gav Microsoft drivkraft til at skabe LINQ. LINQ leverer en forespørgselssyntax, der minder om SQL, der skal bruges på linje med C # eller VB, komplet med statisk kontrol. Ved forespørgsel om .NET-samlinger, i stedet for at bruge indlejrede sløjfer, kan udviklere bruge LINQ-syntaks til at vælge emner og transformere data. Blandt andre fordele resulterer dette i færre kodelinjer sammenlignet med rent objektorienteret syntaks.
Når du får adgang til eksterne datakilder, fjerner LINQ og understøttende komponenter behovet for indlejrede forespørgselssprog og datakortlægninger i et .NET-sprog i sig selv. For at udføre datakortlægning afhænger LINQ af komponenter, der kaldes LINQ-udbydere. LINQ-to-Objects er den lagerudbyder, der giver LINQ adgang til .NET-samlinger. Tilsvarende er der udbydere til at få adgang til relationelle databaser og XML-dokumenter. De fleste af disse udbydere er tredjepartskomponenter, der ikke er inkluderet i .NET Framework. Uanset hvilken anvendt udbyder bruger alle forespørgsler den samme LINQ-syntaks.
Mellem sprogintegreret forespørgselsyntax og udbydere er et bibliotek med forespørgselsoperatører føjet til .NET Framework som en del af LINQ-faciliteterne. Disse operatører udfører sådanne opgaver som filtrering, bestilling, sæt teorifunktioner og aggregering. Da disse operatører er en del af .NET Framework, kan de også bruges uden LINQ, hvis udvikleren vælger det.