Language-Integrated Query (LINQ) je název pro sadu technologií na základě integrace možností dotazů přímo do jazyka C#. Dotazy na data se tradičně vyjadřují jako jednoduché řetězce bez kontroly typů v době kompilace nebo podpory 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 atd. V jazyce LINQ je dotaz jazykovou konstrukcí první třídy, stejně jako třídy, metody a události.
Pro vývojáře, který píše dotazy, je nejviditelnější "jazykově integrovaná" část LINQ výraz dotazu. Výrazy dotazů jsou napsány v syntaxi deklarativního dotazu. Pomocí syntaxe dotazu můžete provádět operace filtrování, řazení a seskupování zdrojů dat s minimem kódu. Stejné základní vzory výrazů dotazů se používají k dotazování a transformaci dat v databázích SQL, datových sadách ADO .NET, dokumentech a datových proudech XML a kolekcích .NET.
Následující příklad ukazuje úplnou operaci dotazu. Úplná operace zahrnuje vytvoření zdroje dat, definování výrazu dotazu a spuštění dotazu v foreach příkazu .
// Specify the data source.
int[] scores = { 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
Přehled výrazů dotazů
Výrazy dotazů lze použít k dotazování a transformaci dat z libovolného zdroje dat s podporou LINQ. Například jeden dotaz může načíst data z SQL databáze a vytvořit datový proud XML jako výstup.
Výrazy dotazů lze snadno pochopit, protože používají mnoho známých konstruktorů jazyka C#.
Proměnné ve výrazu dotazu jsou všechny silného typu, i když v mnoha případech není nutné explicitně zadat typ, protože kompilátor ho může odvodit. Další informace najdete v tématu Relace typů v operacích dotazů LINQ.
Dotaz se neprovádí, dokud neprovádíte iteraci přes proměnnou dotazu, například v foreach příkazu . Další informace najdete v tématu Úvod do dotazů LINQ.
V době kompilace jsou výrazy dotazů převedeny na volání metody standardního 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á a stručnější. Další informace najdete v tématu Specifikace jazyka C# aPřehled standardních operátorů dotazů.
Při psaní dotazů LINQ doporučujeme vždy, když je to možné, používat syntaxi dotazů a syntaxi metod, kdykoli je to potřeba. Mezi těmito dvěma různými formuláři není žádný sémantický rozdíl nebo rozdíl ve výkonu. Výrazy dotazů jsou často lépe čitelné než ekvivalentní výrazy napsané v syntaxi metody.
Některé operace dotazů, například Count nebo Max, nemají žádnou ekvivalentní klauzuli výrazu dotazu a proto musí být vyjádřeny jako volání metody. Syntaxi metody lze kombinovat se syntaxí dotazu různými způsoby. Další informace najdete v tématu Syntaxe dotazů a syntaxe metod v jazyce LINQ.
Výrazy dotazů lze zkompilovat do stromů výrazů nebo delegátů v závislosti na typu, na který se dotaz používá. IEnumerable<T> Dotazy se kompilují do delegátů. IQueryable Dotazy IQueryable<T> a se kompilují do stromů výrazů. Další informace najdete v tématu Stromy výrazů.
Další kroky
Pokud chcete získat další podrobnosti o jazyce LINQ, začněte tím, že se seznámíte s některými základními koncepty v tématu Základy výrazů dotazů a pak si přečtěte dokumentaci pro technologii LINQ, která vás zajímá: