Vad är en språkintegrerad fråga?
Språkintegrerad fråga (LINQ) ger möjlighet att smidigt integrera deklarativ frågesyntax i nödvändiga språk, främst C # och VB.NET. Utvecklingen av LINQ löste problemen utvecklare arbetar i objektorienterade miljöer när de utförde frågor. Den introducerades som en del av Microsoft® .NET Framework version 3.5 i november 2007 och i Visual Studio®-kodnamnet "Orcas."
Innan skapandet av språkintegrerad fråga hade .NET-språk inget ursprungligt sätt att fråga relationella databaser eller XML-dokument. Utvecklare som skrev på dessa språk var tvungna att bädda in SQL respektive XQuery som strängar och manuellt kartlägga resulterande data till .NET-objekt. Inbyggda frågesträngar och kartläggningar kunde inte valideras av .NET-kompilatorer, vilket möjliggör att potentiella fel kan upptäckas vid körning.
Ett annat problem som utvecklare mötte innan språkintegrerad fråga var att .NET-språk bara hade inriktad syntax till frågesamlingar av .NET-objekt. Vanligtvis skulle utvecklaren iterera över en hel källsamling och bygga nya resultatsamlingar baserade på sökkriterier. Utvecklaren kan också transformera uppgifterna medan han byggde resultatsamlingar. Detta tillvägagångssätt var besvärligt; en enkel utvalda fråga skriven i C # eller VB kräver minst fem kodrader, medan samma fråga kräver en kodrad i ett frågespråk.
Utmaningarna med att fråga i en objektorienterad miljö gav Microsoft drivkraft att skapa LINQ. LINQ tillhandahåller en frågesyntax som påminner om SQL som ska användas i linje med C # eller VB, komplett med statisk typkontroll. I fråga om .NET-samlingar, i stället för att använda kapslade slingor, kan utvecklare använda LINQ-syntax för att välja objekt och transformera data. Bland andra fördelar resulterar detta i färre kodrader jämfört med rent objektorienterad syntax.
Vid åtkomst till externa datakällor tar LINQ och stödjande komponenter bort behovet av inbäddade frågespråk och datakartläggningar i ett .NET-språk i sig. För att utföra datakartläggning beror LINQ på komponenter som kallas LINQ-leverantörer. LINQ-to-Objects är den aktieleverantör som gör det möjligt för LINQ att komma åt .NET-samlingar. På liknande sätt finns det leverantörer för åtkomst till relationsdatabaser och XML-dokument. De flesta av dessa leverantörer är komponenter från tredje part som inte ingår i .NET Framework. Oavsett vilken leverantör som används använder alla frågor samma LINQ-syntax.
Mellan den språkintegrerade frågesyntaxen och leverantörerna finns ett bibliotek med frågefunktioner som läggs till .NET Framework som en del av LINQ-anläggningarna. Dessa operatörer utför sådana uppgifter som filtrering, beställning, uppsättningsteorioperationer och aggregering. Eftersom dessa operatörer ingår i .NET Framework, kan de också användas utan LINQ om utvecklaren väljer det.