LINQ (Language Integrated Query)

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 prvotřídní jazykový konstruktor, 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 .

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

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ů se snadno zvládnou, 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ázíte iteraci v proměnné 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# a Př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 nebo , nemají žádnou ekvivalentní klauzuli výrazu dotazu a proto musí být vyjádřeny Count Max jako volání metody. Syntaxi metody je možné kombinovat se syntaxí dotazů 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á:

Pokud chcete získat hlubší porozumění JAZYKu LINQ obecně, podívejte se na linq v jazyce C#.

Pokud chcete začít pracovat s LINQ v jazyce C#, podívejte se na kurz Práce s LINQ.