Co je to jazykově integrovaný dotaz?
Jazykově integrovaný dotaz (LINQ) poskytuje možnost bezproblémové integrace deklarativní syntaxe dotazu do imperativních jazyků, především C # a VB.NET. Vývoj LINQ vyřešil problémy, se kterými se vývojáři pracující v objektově orientovaných prostředích setkali při provádění dotazů. Byl představen jako součást Microsoft® .NET Framework verze 3.5 v listopadu 2007 a v krycím jménu Visual Studio® „Orcas“.
Před vytvořením dotazu integrovaného v jazyce neměli jazyky .NET nativní způsob dotazování relačních databází nebo dokumentů XML. Vývojáři psaní v těchto jazycích museli vložit SQL nebo XQuery, respektive jako řetězce, a ručně namapovat výsledná data na .NET objekty. Vložené řetězce dotazů a mapování nemohly být ověřeny kompilátory .NET, což umožnilo odhalit potenciální chyby za běhu.
Dalším problémem, který vývojáři čelili před dotazem na integraci jazyka, bylo to, že jazyky .NET měly pouze objektově orientovanou syntaxi pro dotazování na kolekce objektů .NET. Vývojář by obvykle opakoval celou kolekci zdrojů a vytvářel nové kolekce výsledků na základě vyhledávacích kritérií. Vývojář mohl také transformovat data při vytváření výsledkových kolekcí. Tento přístup byl těžkopádný; jednoduchý výběrový dotaz napsaný v C # nebo VB by vyžadoval alespoň pět řádků kódu, zatímco stejný dotaz by vyžadoval jeden řádek kódu v jazyce dotazu.
Výzvy dotazování v objektově orientovaném prostředí daly společnosti Microsoft podnět k vytvoření LINQ. LINQ poskytuje syntaxi dotazu připomínající SQL, která se používá v linii s C # nebo VB, doplněná o kontrolu statického typu. Při dotazování na kolekce .NET mohou vývojáři namísto použití vnořených smyček použít syntaxi LINQ k výběru položek a transformaci dat. To má mimo jiné za následek méně řádků kódu ve srovnání s čistě objektově orientovanou syntaxí.
Při přístupu k externím zdrojům dat LINQ a podpůrné komponenty odstraňují potřebu zabudovaných jazyků dotazů a mapování dat v samotném jazyce .NET. Aby bylo možné provést mapování dat, LINQ závisí na komponentách nazývaných poskytovatelé LINQ. LINQ-to-Objects je poskytovatelem akcií, který umožňuje LINQ přístup k kolekcím .NET. Podobně existují poskytovatelé pro přístup k relačním databázím a dokumentům XML. Většina z těchto poskytovatelů jsou komponenty třetích stran, které nejsou zahrnuty do rozhraní .NET Framework. Bez ohledu na použitý poskytovatel používají všechny dotazy stejnou syntaxi LINQ.
Mezi jazykově integrovanou syntaxi dotazů a poskytovateli je knihovna operátorů dotazů přidaná do rozhraní .NET Framework jako součást zařízení LINQ. Tito operátoři provádějí takové úkoly, jako je filtrování, řazení, operace teorie množin a agregace. Protože tito operátoři jsou součástí .NET Framework, mohou být také použiti bez LINQ, pokud si to vývojář zvolí.