Dil ile Tümleşik Sorgu (LINQ)Language Integrated Query (LINQ)

Dil ile tümleşik sorgu (LINQ) tümleştirmesini sorgu özellikleri doğrudan C# dilinin temel teknoloji kümesi adıdır.Language-Integrated Query (LINQ) is the name for a set of technologies based on the integration of query capabilities directly into the C# language. Geleneksel olarak, veri sorguları zaman veya IntelliSense desteği olmadan tür denetimini en basit dizeler derleme olarak ifade edilir.Traditionally, queries against data are expressed as simple strings without type checking at compile time or IntelliSense support. Ayrıca, her veri kaynağı türü için bir farklı bir sorgu dili öğrenmek zorunda: SQL veritabanlarını, XML belgeleri, çeşitli Web Hizmetleri ve benzeri.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. LINQ ile olduğu gibi sınıflar, yöntemler, olaylar bir birinci sınıf dil yapısı sorgu.With LINQ, a query is a first-class language construct, just like classes, methods, events.

Sorguları Yazar bir geliştirici için en çok görünen "dil ile tümleşik" LINQ sorgu ifadesi parçasıdır.For a developer who writes queries, the most visible "language-integrated" part of LINQ is the query expression. Sorgu ifadeleri bildirim temelli yazılır sorgu söz dizimi.Query expressions are written in a declarative query syntax. Sorgu söz dizimi kullanarak, filtreleme, sıralama ve gruplandırma işlemlerinin en az veri kaynaklarında kod gerçekleştirebilirsiniz.By using query syntax, you can perform filtering, ordering, and grouping operations on data sources with a minimum of code. Aynı temel sorgu ifade desenleri, sorgu ve veri SQL veritabanları, ADO .NET veri kümeleri, .NET koleksiyonları, XML belgeleri ve akışları dönüştürmek için kullanın.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.

Aşağıdaki örnek, tam bir sorgu işlemi gösterilmektedir.The following example shows the complete query operation. Veri kaynağı oluşturma, sorgu ifadesi tanımlama ve sorgu yürütme işlemi tamamlamak içeren bir foreach deyimi.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

Sorgu ifadesi genel bakışQuery expression overview

  • Sorgu ifadeleri, sorgulama ve herhangi bir LINQ özellikli veri kaynağından verileri dönüştürmek için kullanılabilir.Query expressions can be used to query and to transform data from any LINQ-enabled data source. Örneğin, tek bir sorgu, bir SQL veritabanından veri almak ve çıktı olarak bir XML akışı üretir.For example, a single query can retrieve data from a SQL database, and produce an XML stream as output.

  • Sorgu ifadeleri, alışık olduğunuz birçok C# dil yapılarının kullandıkları için ana kolaydır.Query expressions are easy to master because they use many familiar C# language constructs.

  • Çoğu durumda derleyici çıkarsayabilir türü açıkça sağlamanız gerekmez ancak bir sorgu ifadesinde değişkenleri tüm, kesin olarak belirlenmiştir.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. Daha fazla bilgi için tür ilişkileri LINQ Sorgu işlemleri.For more information, see Type relationships in LINQ query operations.

  • Sorgu değişkeni üzerinde yineleme kadar bir sorgu yürütülmedi Örneğin, bir foreach deyimi.A query is not executed until you iterate over the query variable, for example, in a foreach statement. Daha fazla bilgi için LINQ sorgularına giriş.For more information, see Introduction to LINQ queries.

  • Derleme zamanında sorgu ifadeleri C# belirtiminde ortaya konan kurallara göre standart sorgu işleci yöntem çağrılarını dönüştürülür.At compile time, query expressions are converted to Standard Query Operator method calls according to the rules set forth in the C# specification. Sorgu söz dizimi kullanarak ifade edilebilir herhangi bir sorgu yöntemi söz dizimi kullanılarak da belirtilebilir.Any query that can be expressed by using query syntax can also be expressed by using method syntax. Ancak, çoğu durumda, daha okunabilir ve kısa sorgu söz dizimi.However, in most cases query syntax is more readable and concise. Daha fazla bilgi için C# dil belirtimi ve standart sorgu işleçlerine genel bakış.For more information, see C# language specification and Standard query operators overview.

  • LINQ sorguları yazarken bir kural olarak, mümkün olduğunda sorgu sözdizimi ve yöntem sözdizimi gerektiğinde kullanmanızı öneririz.As a rule when you write LINQ queries, we recommend that you use query syntax whenever possible and method syntax whenever necessary. Yok Hayır anlam veya iki farklı formlar arasında performans farkı.There is no semantic or performance difference between the two different forms. Sorgu ifadeleri olan genellikle daha fazla eşdeğer ifadelerin yöntemi sözdizimi yazılan daha okunabilir.Query expressions are often more readable than equivalent expressions written in method syntax.

  • Bazı sorgu işlemleri gibi Count veya Max, hiçbir eşdeğer sorgu ifade yan tümcesine sahip ve bu nedenle bir yöntem çağrısının ifade edilmelidir.Some query operations, such as Count or Max, have no equivalent query expression clause and must therefore be expressed as a method call. Yöntem sözdizimi, çeşitli yollarla sorgu söz dizimi ile birleştirilebilir.Method syntax can be combined with query syntax in various ways. Daha fazla bilgi için sorgu sözdizimi ve yöntem sözdizimi LINQ.For more information, see Query syntax and method syntax in LINQ.

  • Sorgu ifadeleri, ifade ağaçları veya Temsilciler, sorgu uygulanan türüne bağlı olarak derlenebilir.Query expressions can be compiled to expression trees or to delegates, depending on the type that the query is applied to. IEnumerable<T> sorgular için temsilciler derlenir.IEnumerable<T> queries are compiled to delegates. IQueryable ve IQueryable<T> sorguları, ifade ağaçlarına derlenir.IQueryable and IQueryable<T> queries are compiled to expression trees. Daha fazla bilgi için ifade ağaçları.For more information, see Expression trees.

Sonraki adımlarNext steps

LINQ hakkında daha fazla bilgi edinmek için bazı temel kavramları hakkında bilgi sahibi olma Başlat sorgu ifadesi Temelleri, ve ardından, olduğu ilgilenen LINQ teknolojisi için belgeleri okuyun: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:

Bir derin LINQ genel olarak anlaşılması için bkz: C# üzerinde LINQ.To gain a deeper understanding of LINQ in general, see LINQ in C#.

C# üzerinde LINQ ile çalışmaya başlamak için öğreticiye bakın LINQ ile çalışma.To start working with LINQ in C#, see the tutorial Working with LINQ.