Dil ile Tümleşik Sorgu (LINQ)
Language-Integrated (LINQ), sorgu özelliklerini doğrudan C# diliyle tümleştirmeye dayalı bir dizi teknolojinin adıdır. Geleneksel olarak, verilere yönelik sorgular, derleme zamanında veya IntelliSense desteğinde tür denetimi olmadan basit dizeler olarak ifade edilen sorgulardır. Ayrıca her veri kaynağı türü için farklı bir sorgu dili öğrenmeniz gerekir: SQL, XML belgeleri, çeşitli Web hizmetleri gibi. LINQ ile sorgu, sınıflar, yöntemler ve olaylar gibi birinci sınıf bir dil yapısıdır.
Sorgu yazan bir geliştirici için LINQ'nin en görünür "dil ile tümleşik" bölümü sorgu ifadesidir. Sorgu ifadeleri bildirime göre sorgu söz dizimlerinde yazılır. Sorgu söz dizimi kullanarak, en az kodla veri kaynaklarında filtreleme, sıralama ve gruplama işlemleri gerçekleştirebilirsiniz. Aynı temel sorgu ifadesi desenlerini kullanarak SQL veritabanlarında, ADO .NET Veri Kümelerinde, XML belgelerinde ve akışlarında ve .NET koleksiyonlarında verileri sorgular ve dönüştürebilirsiniz.
Aşağıdaki örnekte sorgu işleminin tamamlanmıştır. Tam işlem bir veri kaynağı oluşturmayı, sorgu ifadesini tanımlamayı ve sorguyu deyiminde yürütmeyi foreach
içerir.
// 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
Sorgu ifadesine genel bakış
Sorgu ifadeleri, LINQ özellikli herhangi bir veri kaynağından verileri sorgulamak ve dönüştürmek için kullanılabilir. Örneğin, tek bir sorgu bir SQL veritabanından veri alabilir ve çıkış olarak bir XML akışı üretebilir.
Birçok tanıdık C# dili yapısı kullandığı için sorgu ifadelerini kavramak kolaydır.
Sorgu ifadesinde yer alan değişkenlerin hepsi kesin türe sahip olsa da çoğu durumda derleyici tür çıkarayana kadar türü açıkça sağlamak zorunda değildir. Daha fazla bilgi için bkz . LINQ sorgu işlemlerinde tür ilişkileri.
Sorgu değişkeni üzerinde örneğin deyiminde tekrar olana kadar sorgu yürütülmez
foreach
. Daha fazla bilgi için bkz . LINQ sorgularına giriş.Derleme zamanında sorgu ifadeleri, C# belirtimlerinde belirtilen kurallara göre Standart Sorgu İşleci yöntem çağrılarına dönüştürülür. Sorgu söz dizimi kullanılarak ifade edlan tüm sorgular, yöntem söz dizimi kullanılarak da ifade olabilir. Ancak çoğu durumda sorgu söz dizimi daha okunabilir ve kısadır. Daha fazla bilgi için bkz. C# dil belirtimi ve Standart sorgu işleçleri genel bakış.
LINQ sorguları yazarken kural olarak, mümkün olduğunda sorgu söz dizimi ve gerektiğinde yöntem söz dizimi kullanmanız önerilir. İki farklı biçim arasında semantik veya performans farkı yoktur. Sorgu ifadeleri genellikle yöntem söz dizimlerinde yazılan eşdeğer ifadelerden daha okunabilirdir.
veya gibi bazı sorgu işlemlerinin Count eşdeğer Maxbir sorgu ifadesi yan tümcesi yoktur ve bu nedenle yöntem çağrısı olarak ifade etmek gerekir. Yöntem söz dizimi, sorgu söz dizimi ile çeşitli yollarla bir araya kullanılabilir. Daha fazla bilgi için bkz. LINQ'te sorgu söz dizimi ve yöntem söz dizimi.
Sorgu ifadeleri, sorgunun uygulandığı türe bağlı olarak ifade ağaçlarına veya temsilcilere derlenebilirsiniz. IEnumerable<T> sorgular temsilciler için derlenmiş. IQueryable ve IQueryable<T> sorguları ifade ağaçlarında derlenmiş. Daha fazla bilgi için bkz. İfade ağaçları.
Sonraki adımlar
LINQ hakkında daha fazla bilgi edinmek için başlangıç olarak Sorgu ifadesi temel bilgileri'nin bazı temel kavramlarını öğrenin ve ardından ilgilendiğiniz LINQ teknolojisine ilişkin belgeleri okuyun:
XML belgeleri: LINQ to XML
ADO.NET Entity Framework: LINQ to entities
.NET koleksiyonları, dosyaları, dizeleri ve diğer: LINQ to objects
Genel olarak LINQ hakkında daha fazla bilgi için bkz. C# ile LINQ.
C# ile LINQ ile çalışmaya başlamak için BKZ. LINQ ile çalışma.