Skip to main content

Co je to jazykový integrovaný dotaz?

Language Integrated Query (LINQ) poskytuje schopnost hladce integrovat deklarativní syntaxi dotazu do imperativních jazyků, především C# a VB.NET.Vývoj LINQ vyřešil problémy vývojáři pracující v objektově orientovaných prostředích, se kterými se setkala při provádění dotazů.Byl představen jako součást Microsoft .NET Framework verze 3.5 v listopadu 2007 a ve Visual Studio codename orcas.

Před vytvořením jazykového integrovaného dotazu neměly .NET jazyky nativní způsob, jak dotazovat relační databáze nebo dokumenty XML.Vývojáři psaní v těchto jazycích museli vložit SQL nebo XQuery jako řetězce a ručně mapovat výsledná data do objektů .NET.Vestavěné řetězce a mapování dotazů nemohly být ověřeny kompilátory .NET, což umožnilo objevit potenciální chyby v době běhu.Čisté objekty.Vývojář by obvykle iteroval po celé sbírce zdrojů a vytvořil nové kolekce výsledků založené na kritériích vyhledávání.Vývojář mohl také transformovat data při vytváření kolekcí výsledků.Tento přístup byl těžkopádný;Jednoduchý výběrový dotaz napsaný v C# nebo VB by vyžadoval nejméně pět řádků kódu, zatímco stejný dotaz by vyžadoval jeden řádek kódu v jazyce dotazu.Vytvořte LINQ.LINQ poskytuje syntaxi dotazu připomínající SQL, která má být použita in-line s C# nebo VB, kompletní s kontrolou statického typu.Při dotazování .NET sbírky mohou vývojáři místo použití vnořených smyček použít Syntaxe LINQ k výběru položek a transformaci dat.Mezi jiné výhody to vede k méně řádkům 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 vložených jazyků dotazů a mapování dat v samotném jazyce .NET.Za účelem provedení mapování dat závisí LINQ na komponentách zvaných poskytovatelé LINQ.LINQ-to-Objects je poskytovatel akcií, který umožňuje LINQ k přístupu ke sbírká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 rámce .NET.Bez ohledu na použité poskytovatele používají všechny dotazy stejnou syntaxi LINQ.Tito operátoři provádějí takové úkoly, jako je filtrování, objednávání, nastavení teoretických operací a agregace.Protože tito operátoři jsou součástí rámce .NET, lze je také použít bez LINQ, pokud si vývojář vybere.