LINQ (Language Integrated Query), farklı kaynaklardan ve formatlardan veri almak için C # ve VB.NET’te düzgün bir sorgu sözdizimidir. C # veya VB’ ye entegre edilmiştir, böylece programlama dilleri ile veritabanları arasındaki uyuşmazlığı ortadan kaldırır, ayrıca farklı veri kaynakları için tek bir sorgulama arayüzü sağlamanın yanı sıra.
Örneğin, SQL, veritabanından veri kaydetmek ve almak için kullanılan yapılandırılmış bir sorgu dilidir. Aynı şekilde, LINQ, COLLECTESS, ADO.NET VERASET, XML DOCS, Web Hizmeti, MS SQL Server ve diğer veritabanları gibi farklı veri kaynaklarından veri almak için C # ve VB.net’te yerleşik yapılandırılmış bir sorgu sözdizimidir.
LINQ sorguları, sonuçları nesne olarak döndürür. Sonuç kümesinde nesne yönelimli yaklaşımı kullanmanızı ve farklı sonuç biçimlerini nesnelere dönüştürme konusunda endişelenmemenizi sağlar.
Neden LINQ?
Neden LINQ kullanmamız gerektiğini anlamak için bazı örneklere bakalım. Bir Student nesnesinden bazı öğrencilerin listesini bulmak istediğinizi varsayalım.
C# 2.0’dan önce, belirli bir nesneyi bulmak için koleksiyonu dolaşmak için bir ‘foreach‘ veya ‘for‘ döngüsü kullanmamız gerekiyordu. Örneğin, yaşları 12 ile 20 arasında olan (13-19 yaş arası gençler için) bir dizi Öğrenciden tüm Student nesnelerini bulmak için aşağıdaki kodu yazmamız gerekiyordu.
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | class Student { public int StudentID { get; set; } public String StudentName { get; set; } public int Age { get; set; } } class Program { static void Main(string[] args) { Student[] studentArray = { new Student() { StudentID = 1, StudentName = "John", Age = 18 }, new Student() { StudentID = 2, StudentName = "Steve", Age = 21 }, new Student() { StudentID = 3, StudentName = "Bill", Age = 25 }, new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 }, new Student() { StudentID = 5, StudentName = "Ron" , Age = 31 }, new Student() { StudentID = 6, StudentName = "Chris", Age = 17 }, new Student() { StudentID = 7, StudentName = "Rob",Age = 19 }, }; Student[] students = new Student[10]; int i = 0; foreach (Student std in studentArray) { if (std.Age > 12 && std.Age < 20) { students[i] = std; i++; } } } } |
For döngüsünün kullanımı zahmetlidir, bakımı yapılamaz ve okunabilir değildir.
Aşağıdaki örnek ise öğrenci koleksiyonundan belirli bir öğrenciyi/öğrencileri bulmak için lambda ifadesiyle LINQ sorgusunu nasıl kullanabileceğinizi gösterir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | class Program { static void Main(string[] args) { Student[] studentArray = { new Student() { StudentID = 1, StudentName = "John", age = 18 } , new Student() { StudentID = 2, StudentName = "Steve", age = 21 } , new Student() { StudentID = 3, StudentName = "Bill", age = 25 } , new Student() { StudentID = 4, StudentName = "Ram" , age = 20 } , new Student() { StudentID = 5, StudentName = "Ron" , age = 31 } , new Student() { StudentID = 6, StudentName = "Chris", age = 17 } , new Student() { StudentID = 7, StudentName = "Rob",age = 19 } , }; // Yaşı 12-20 arası öğrencileri bulmak için LINQ kullanın Student[] teenAgerStudents = studentArray.Where(s => s.age > 12 && s.age < 20).ToArray(); // Adı Bill olan ilk öğrenciyi bulmak için LINQ kullanın Student bill = studentArray.Where(s => s.StudentName == "Bill").FirstOrDefault(); // StudentID 5 olan öğrenciyi bulmak için LINQ kullanın Student student5 = studentArray.Where(s => s.StudentID == 5).FirstOrDefault(); } } |
Add Comment