LINQ (Language Integrated Query) (C#)
Language-Integrated Query (LINQ) je název sady technologií založených na integraci možností dotazů přímo do jazyka C#. Tradičně se dotazy na data vyjadřují jako jednoduché řetězce bez kontroly typu v době kompilace nebo v podpoře technologie IntelliSense. kromě toho se musíte naučit jiný dotazovací jazyk pro každý typ zdroje dat: SQL databáze, dokumenty XML, různé webové služby a tak dále. Pomocí LINQ je dotazem konstrukce jazyka první třídy, stejně jako třídy, metody a události. Zapisujete dotazy na kolekce objektů se silnými typy pomocí klíčových slov jazyka a známých operátorů. rodina technologie LINQ nabízí konzistentní možnosti dotazování pro objekty (LINQ to Objects), relační databáze (LINQ to SQL) a XML (LINQ to XML).
Pro vývojáře, který zapisuje dotazy, je nejpravděpodobnější "jazykově integrovaná" část LINQ výraz dotazu. Výrazy dotazů jsou zapsány v deklarativní syntaxi dotazu. Pomocí syntaxe dotazů můžete provádět filtrování, řazení a seskupování operací na zdrojích dat s minimálním kódem. k dotazování a transformaci dat v SQL databázích, ADO.NET datových sadách, dokumentech XML a datových proudech a kolekcích .net můžete použít stejné základní vzory výrazů dotazů.
dotazy LINQ můžete psát v jazyce C# pro SQL Server databází, dokumentů XML, ADO.NET datových sad a všech kolekcí objektů, které podporují IEnumerable nebo obecné IEnumerable<T> rozhraní. Podporu LINQ poskytují i třetí strany pro mnoho webových služeb a dalších implementací databáze.
Následující příklad ukazuje operaci dokončení dotazu. Operace Complete zahrnuje vytvoření zdroje dat, definování výrazu dotazu a spuštění dotazu v foreach příkazu.
class LINQQueryExpressions
{
static void Main()
{
// Specify the data source.
int[] scores = new int[] { 97, 92, 81, 60 };
// Define the query expression.
IEnumerable<int> scoreQuery =
from score in scores
where score > 80
select score;
// Execute the query.
foreach (int i in scoreQuery)
{
Console.Write(i + " ");
}
}
}
// Output: 97 92 81
následující ilustrace z Visual Studio ukazuje částečně dokončený dotaz LINQ na databázi SQL Server v jazyce C# i v Visual Basic s kontrolou úplného typu a podporou technologie IntelliSense:

Přehled výrazu dotazu
- Výrazy dotazů lze použít k dotazování a transformaci dat z libovolného zdroje dat s podporou jazyka LINQ. jeden dotaz může například načíst data z databáze SQL a vytvořit datový proud XML jako výstup.
- Výrazy dotazů je možné snadno uchopit, protože používají mnoho známých konstrukcí jazyka C#.
- Proměnné ve výrazu dotazu jsou všechny silně typované, i když v mnoha případech nemusíte explicitně zadat typ, protože ho kompilátor může odvodit. Další informace najdete v tématu vztahy typů v operacích dotazu LINQ.
- Dotaz není proveden, dokud neprovedete iteraci nad proměnnou dotazu, například v
foreachpříkazu. Další informace najdete v tématu Úvod do dotazů LINQ. - V době kompilace jsou výrazy dotazu převedeny na standardní volání metody operátoru dotazu podle pravidel stanovených ve specifikaci jazyka C#. Jakýkoli dotaz, který lze vyjádřit pomocí syntaxe dotazu, lze také vyjádřit pomocí syntaxe metody. Ve většině případů je ale syntaxe dotazů čitelnější a Stručná. Další informace najdete v tématu Přehled jazyka C# a standardní operátory dotazu.
- Jako pravidlo při psaní dotazů LINQ doporučujeme použít syntaxi dotazu, kdykoli je to možné, a syntaxi metody kdykoli je to nezbytné. Mezi dvěma různými formuláři není žádný sémantický nebo výkonový rozdíl. Výrazy dotazů jsou často čitelnější než ekvivalentní výrazy napsané v syntaxi metody.
- Některé operace dotazu, například Count nebo Max , nemají žádnou ekvivalentní klauzuli výrazu dotazu a musí být proto vyjádřeny jako volání metody. Syntaxi metody lze kombinovat se syntaxí dotazu různými způsoby. Další informace naleznete v tématu syntaxe dotazu a syntaxe metody v jazyce LINQ.
- Výrazy dotazů lze zkompilovat do stromů výrazů nebo delegátů v závislosti na typu, na který je dotaz použit. IEnumerable<T> dotazy jsou kompilovány pro delegáty. IQueryable a IQueryable<T> dotazy jsou kompilovány do stromů výrazů. Další informace najdete v tématu stromy výrazů.
Další kroky
Pokud chcete získat další informace o LINQ, začněte tím, že se seznámíte s některými základními koncepty v základech dotazů na dotazya pak si přečtěte dokumentaci pro technologii LINQ, ve které máte zájem:
- dokumenty XML: LINQ to XML
- ADO.NET Entity Framework: LINQ to entities
- Kolekce .NET, soubory, řetězce a tak dále: LINQ to Objects
Chcete-li získat hlubší porozumění LINQ obecně, přečtěte si téma LINQ v jazyce C#.
Chcete-li začít pracovat s LINQ v jazyce C#, přečtěte si kurz práce s LINQ.