Jazyk integrovaného dotazu (LINQ)Language Integrated Query (LINQ)

Language-Integrated Query (LINQ) je název pro sadu technologií, v závislosti na integraci funkcí dotaz přímo do jazyka C#.Language-Integrated Query (LINQ) is the name for a set of technologies based on the integration of query capabilities directly into the C# language. Dotazy na data jsou tradičně, vyjádřené jako jednoduchý řetězce bez kontrolu typu v kompilaci čas nebo podporu technologie IntelliSense.Traditionally, queries against data are expressed as simple strings without type checking at compile time or IntelliSense support. Kromě toho budete muset další různých dotazovací jazyk pro každý typ zdroje dat: SQL databáze, dokumentů XML, různé webové služby a tak dále.Furthermore, you have to learn a different query language for each type of data source: SQL databases, XML documents, various Web services, and so on. S dotazy LINQ dotazu je první třídy jazyka konstrukce, stejně jako tříd, metod, události.With LINQ, a query is a first-class language construct, just like classes, methods, events.

Pro vývojáře, který zapíše dotazy je většina viditelná "language-integrated" část LINQ výrazu dotazu.For a developer who writes queries, the most visible "language-integrated" part of LINQ is the query expression. Výrazy dotazů jsou zapsány v deklarativní syntaxe dotazu.Query expressions are written in a declarative query syntax. Pomocí syntaxe dotazů můžete provést filtrování, řazení a seskupování operací na zdroje dat s minimální kódu.By using query syntax, you can perform filtering, ordering, and grouping operations on data sources with a minimum of code. Použijete stejný výraz vzory základního dotazu pro dotazování a transformovat data v databází SQL, ADO .NET datové sady, dokumentů XML a datových proudů a kolekcí .NET.You use the same basic query expression patterns to query and transform data in SQL databases, ADO .NET Datasets, XML documents and streams, and .NET collections.

Následující příklad ukazuje operaci dokončení dotazu.The following example shows the complete query operation. Dokončení operace zahrnuje vytváření zdroje dat, definování výrazu dotazu a provádění dotazu v foreach příkaz.The complete operation includes creating a data source, defining the query expression, and executing the query in a foreach statement.

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 dotazuQuery expression overview

  • Výrazy dotazů lze použít k dotazování a který umožňuje transformovat data ze zdroje dat podporující LINQ.Query expressions can be used to query and to transform data from any LINQ-enabled data source. Například jeden dotaz můžete načíst data z databáze SQL a vytvoří datový proud XML jako výstup.For example, a single query can retrieve data from a SQL database, and produce an XML stream as output.

  • Výrazy dotazů lze snadno na hlavní server, protože používají mnoho známých C# jazykové konstrukty.Query expressions are easy to master because they use many familiar C# language constructs.

  • 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 lze odvodit ho.The variables in a query expression are all strongly typed, although in many cases you do not have to provide the type explicitly because the compiler can infer it. Další informace najdete v tématu vztahy typů v LINQ dotazu operations.For more information, see Type relationships in LINQ query operations.

  • Dotaz není provést, dokud iterace v proměnné v dotazu, například v foreach příkaz.A query is not executed until you iterate over the query variable, for example, in a foreach statement. Další informace najdete v tématu Úvod do dotazů LINQ.For more information, see Introduction to LINQ queries.

  • Při kompilaci jsou výrazy dotazu převedeny na standardní – operátor dotazu volání metod souladu s pravidly uvedenými v specifikace jazyka C#.At compile time, query expressions are converted to Standard Query Operator method calls according to the rules set forth in the C# specification. Pomocí syntaxe využívající metody lze také vyjádřit dotaz, který lze vyjádřit pomocí syntaxe dotazu.Any query that can be expressed by using query syntax can also be expressed by using method syntax. Ve většině případů však syntaxe dotazu je čitelnější a stručné sdělení.However, in most cases query syntax is more readable and concise. Další informace najdete v tématu specifikace jazyka C# a přehled standardních operátorů dotazu.For more information, see C# language specification and Standard query operators overview.

  • Jako pravidlo při zápis dotazů LINQ, doporučujeme použít syntaxi dotazu, pokud je to možné a syntaxe využívající metody kdykoli je to nezbytné.As a rule when you write LINQ queries, we recommend that you use query syntax whenever possible and method syntax whenever necessary. Neexistuje žádné sémantického nebo výkonu nesouhlasí dva různé formuláře.There is no semantic or performance difference between the two different forms. Výrazy dotazů jsou často čitelný než ekvivalentní výrazy, které jsou napsané v syntaxe využívající metody.Query expressions are often more readable than equivalent expressions written in method syntax.

  • Některé operace, jako například dotaz Count nebo Max, mít žádná ekvivalentní dotaz výrazu klauzule a proto musí být vyjádřena jako volání metody.Some query operations, such as Count or Max, have no equivalent query expression clause and must therefore be expressed as a method call. Syntaxe využívající metody mohou být kombinovány s syntaxe dotazů různými způsoby.Method syntax can be combined with query syntax in various ways. Další informace najdete v tématu syntaxe využívající dotazy a syntaxe využívající metody v technologii LINQ.For more information, see Query syntax and method syntax in LINQ.

  • Stromy výrazů nebo delegáti, v závislosti na typu, který je použit dotaz na, mohou být zkompilovány výrazy dotazů.Query expressions can be compiled to expression trees or to delegates, depending on the type that the query is applied to. IEnumerable<T> dotazy jsou kompilovány na delegáty.IEnumerable<T> queries are compiled to delegates. IQueryable a IQueryable<T> dotazy jsou zkompilovány do stromů výrazů.IQueryable and IQueryable<T> queries are compiled to expression trees. Další informace najdete v tématu stromů výrazů.For more information, see Expression trees.

Další krokyNext steps

Další podrobnosti o LINQ, spusťte Seznamte se s některé základní pojmy v dotaz základy výrazů, a přečtěte si dokumentaci pro LINQ technologii, která vás zajímá:To learn more details about LINQ, start by becoming familiar with some basic concepts in Query expression basics, and then read the documentation for the LINQ technology in which you are interested:

Pokud chcete pochopit hlubší LINQ obecně, najdete v části LINQ v C#.To gain a deeper understanding of LINQ in general, see LINQ in C#.

Pokud chcete začít pracovat s dotazy LINQ v C#, najdete v části kurzu práce s dotazy LINQ.To start working with LINQ in C#, see the tutorial Working with LINQ.