Kielen integroitu kysely (LINQ) tarjoaa mahdollisuuden integroida saumattomasti deklaratiivisen kyselyn syntaksi pakollisiin kieliin, ensisijaisesti C# ja VB.NET. LINQ: n kehittäminen ratkaisi ongelmat, jotka kehittäjät olivat objektipohjaisissa ympäristöissä ja joita esiintyi kyselyitä suoritettaessa. Se esiteltiin osana Microsoft® .NET Framework -versiota 3.5 marraskuussa 2007 ja Visual Studio® -koodinimellä “Orcas”.
Ennen kielen integroidun kyselyn luomista .NET -kielillä ei ollut alkuperäistä tapaa hakea relaatiotietokantoja tai XML -asiakirjoja. Näillä kielillä kirjoittavien kehittäjien oli upotettava SQL tai XQuery vastaavasti merkkijonoina ja yhdistettävä tuloksena olevat tiedot manuaalisesti .NET -objekteihin. .NET -kääntäjät eivät voineet vahvistaa upotettuja kyselymerkkijonoja ja vastaavuuksia, jolloin mahdolliset virheet voidaan havaita ajon aikana.
Toinen ongelma, jonka kehittäjät kohtasivat ennen kieleen integroitua kyselyä, oli se, että .NET-kielet olivat vain vastustaneet syntaksia .NET-objektien kyselykokoelmille. Yleensä kehittäjä toistaa koko lähdekokoelman ja rakentaa uusia tuloskokoelmia hakuehtojen perusteella. Kehittäjä voi myös muuttaa tietoja tulosten keräämisen aikana. Tämä lähestymistapa oli hankala; yksinkertainen valintakysely, joka on kirjoitettu C#: lla tai VB: llä, vaatii vähintään viisi riviä koodia, kun taas sama kysely vaatii yhden koodirivin kyselykielellä.
Haasteet, jotka liittyvät kyselyyn olio-ympäristössä, antoivat Microsoftille sysäyksen LINQ: n luomiseen. LINQ tarjoaa SQL: ää muistuttavan kyselysyntaksin, jota käytetään C#: n tai VB: n kanssa yhdessä staattisen tyyppitarkistuksen kanssa. Kun kysely tehdään .NET -kokoelmista, kehittäjät voivat sisäkkäisten silmukoiden käyttämisen sijaan valita LINQ -syntaksin kohteiden valitsemiseksi ja tietojen muuntamiseksi. Muiden etujen lisäksi tämä johtaa vähemmän koodiriveihin verrattuna puhtaasti olio-suuntaiseen syntaksiin.
Kun käytät ulkoisia tietolähteitä, LINQ ja tukikomponentit poistavat tarvetta upotetuille kyselykielille ja tietojen yhdistämisille .NET -kielellä. LINQ riippuu tietojen yhdistämisestä LINQ -palveluntarjoajista. LINQ-to-Objects on varastotarjoaja, jonka avulla LINQ voi käyttää .NET-kokoelmia. Samoin on palveluntarjoajia pääsemään relaatiotietokantoihin ja XML -asiakirjoihin. Useimmat näistä palveluntarjoajista ovat kolmannen osapuolen komponentteja, jotka eivät sisälly .NET-kehykseen. Käytetystä palveluntarjoajasta riippumatta kaikissa kyselyissä käytetään samaa LINQ -syntaksia.
Kielellä integroidun kyselyn syntaksin ja palveluntarjoajien välissä on .NET -kehykseen osana LINQ -palveluita lisätty kyselyoperaattoreiden kirjasto. Nämä operaattorit suorittavat sellaisia tehtäviä kuin suodatus, järjestys, joukkoteoriaoperaatiot ja aggregointi. Koska nämä operaattorit ovat osa .NET Frameworkia, niitä voidaan käyttää myös ilman LINQ: tä, jos kehittäjä niin päättää.