Dil ile tümleşik sorgu (LINQ) (C#)
Language-Integrated Query (LINQ), sorgu yeteneklerinin doğrudan C# dilinde tümleştirilmesini temel alan bir teknoloji kümesinin adıdır. Geleneksel olarak, verilere karşı sorgular derleme zamanında veya IntelliSense desteğiyle tür denetlemesi olmadan basit dizeler olarak ifade edilir. ayrıca, her veri kaynağı türü için farklı bir sorgu dili öğrenirsiniz: SQL veritabanları, XML belgeleri, çeşitli Web hizmetleri vb. LINQ ile sorgu, sınıflar, Yöntemler ve olaylar gibi birinci sınıf bir dil yapısıdır. Dil anahtar sözcükleri ve tanıdık işleçleri kullanarak, türü kesin belirlenmiş nesne koleksiyonlara karşı sorgular yazarsınız. lınq teknolojileri, nesneler (LINQ to Objects), ilişkisel veritabanları (LINQ to SQL) ve XML (LINQ to XML) için tutarlı bir sorgu deneyimi sağlar.
Sorgu yazan bir geliştirici için, LINQ 'nin en görünür "dil ile tümleşik" bir kısmı sorgu ifadesidir. Sorgu ifadeleri bildirime dayalı bir sorgu söz dizimine yazılır. Sorgu söz dizimini kullanarak veri kaynaklarında en az kodla filtreleme, sıralama ve gruplama işlemlerini gerçekleştirebilirsiniz. SQL veritabanlarındaki verileri sorgulamak ve dönüştürmek için aynı temel sorgu ifade desenlerini kullanın, ADO.NET veri kümeleri, XML belgeleri ve akışlar ve .net koleksiyonları.
SQL Server veritabanları, XML belgeleri, ADO.NET veri kümeleri ve ya da genel arabirimi destekleyen herhangi bir nesne koleksiyonu için C# dilinde lınq sorguları yazabilirsiniz IEnumerable IEnumerable<T> . Ayrıca, LINQ desteği birçok Web hizmeti ve diğer veritabanı uygulamaları için üçüncü taraflar tarafından da sağlanır.
Aşağıdaki örnek, tüm sorgu işlemini gösterir. Tamamlanmış işlem, bir veri kaynağı oluşturmayı, sorgu ifadesini tanımlamayı ve sorguyu bir deyimde yürütmeyi içerir foreach .
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
Visual Studio aşağıdaki çizimde, hem C# hem de tam tür denetimi ve ıntellisense desteği ile Visual Basic SQL Server veritabanında kısmen tamamlanmış bir lınq sorgusu gösterilmektedir:

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 SQL veritabanından veri alabilir ve çıkış olarak bir XML akışı üretebilir.
- Sorgu ifadeleri, çok tanıdık C# dil yapılarını kullandıkları için kolayca attık 'ye sahiptir.
- Bir sorgu ifadesindeki değişkenlerin hepsi kesin olarak türlidir, ancak çoğu durumda derleyici onu çıkardığı için türü açıkça sağlamak zorunda değilsiniz. Daha fazla bilgi için bkz. LINQ sorgu Işlemlerinde tür ilişkileri.
- Sorgu değişkeni üzerinde yineleme yapana kadar sorgu yürütülmez, örneğin bir
foreachifadede. Daha fazla bilgi için bkz. LINQ Sorgularına Giriş. - Derleme zamanında sorgu ifadeleri, C# belirtiminde belirtilen kurallara göre standart sorgu operatörü yöntemi çağrılarına dönüştürülür. Sorgu söz dizimi kullanılarak ifade edilebilir herhangi bir sorgu, yöntem sözdizimi kullanılarak da ifade edilebilir. Ancak çoğu durumda sorgu sözdizimi daha okunabilir ve kısadır. Daha fazla bilgi için bkz. C# dil belirtimi ve Standart sorgu işleçlerine genel bakış.
- LINQ sorguları yazdığınızda bir kural olarak, gerektiğinde sorgu söz dizimini ve Yöntem sözdizimini kullanmanızı öneririz. İki farklı form arasında anlam veya performans farkı yoktur. Sorgu ifadeleri genellikle yöntem sözdiziminde yazılan denk ifadelerden daha okunabilir.
- Veya gibi bazı sorgu işlemlerinin Count Max eşdeğer sorgu ifadesi yan tümcesi yoktur ve bu nedenle bir yöntem çağrısı olarak ifade edilmesi gerekir. Yöntem sözdizimi, sorgu söz dizimi ile çeşitli şekillerde birleştirilebilir. Daha fazla bilgi için bkz. LINQ 'Te sorgu sözdizimi ve Yöntem sözdizimi.
- Sorgu ifadeleri, sorgu uygulanmış türe bağlı olarak ifade ağaçlarına veya temsilcilere derlenebilir. IEnumerable<T> sorgular temsilcilere derlenir. IQueryable ve IQueryable<T> sorguları ifade ağaçlarına derlenir. Daha fazla bilgi için bkz. ifade ağaçları.
Sonraki adımlar
LINQ hakkında daha fazla bilgi edinmek için sorgu ifadesi temelkavramları konusundaki bazı temel kavramları öğrenerek başlayın ve ardından ilgilendiğiniz LINQ teknolojisinin belgelerini okuyun:
- XML belgeleri: LINQ to XML
- ADO.NET Entity Framework: lınq to entities
- .NET koleksiyonları, dosyalar, dizeler ve benzeri: LINQ to Objects
Genel olarak LINQ hakkında daha ayrıntılı bilgi edinmek için bkz. C# ' de LINQ.
C# ' de LINQ ile çalışmaya başlamak için bkz. LINQ Ile çalışmaöğreticisi.