Etiketlenen Yazılarvar
C# 3.0 : LINQ (Language Integrated Query)
C# 3.0’la gelen bir diğer yenilik ise LINQ. Language Integrated Query komutları SQL sorgularına çok benzer. LINQ ile ister veritabanını sorgulayabiliriz, istersekte oluşturduğumuz koleksiyonları sorgulayabiliriz. Veritabanı sorgulayabilmek için DBML(Database Markup Language) uzantılı bir dosya oluşturulur. Veritabanı sistemi olarak SQL Server’a desteği vardır. Oluşturduğumuz bu DBML dosyasının kodlarına bakarsak aslında bir sınıftır. Yani biz bunu new anahtarıyla örnekleyerek bir nesne oluşturabiliriz. Normalde bu imkansız bir şeydi. Aynı şekilde koleksiyonlarımızıda sorgulayabiliriz. Bir int dizisi olduğunu düşünün. Bu dizinin içindeki elemanları sıralamak gerekiyor. Bunu yapabilmeniz için iç içe düngü kullanarak yapmak gerekirken artık LINQ ile SQL tarzı sorgular yazarak bu işi daha kolay ve performanslı bir şekilde yapabiliriz.
Şimdi bu konu hakkında bir örnek yapalım. Ben bu yazıda sadece koleksiyonları sorgulayacak bir LINQ projesi hazırlıycam. İkinci yazımda ise DLINQ yani veritabanını sorgulayacak LINQ projesi hazırlayacağım. Şimdi kodlarımızı yazalım :
int[] sayilar = new int[] { 1, 5, 9, 0, 3, 4, 5, 8, 7 };
var sorgu = from f in sayilar
orderby desc
select f;
foreach (string s in sorgu)
{Console.Writeline(s);
}
Console.Readline();
Burada ilk önce bir int tipinde dizi tanımladık. Daha sonra yine C# 3.0 ile gelen yeniliklerden biri olan var anahtar kelimesiyle isimsiz bir tip tanımladık. Bu sayede ilgili değişkenin tipini biz değil çalışma zamanında programlama dili ayarlayacak. Herhangi bir performans kaybı yaşanmayacaktır. Çünkü programlama dili var ile tanımlanmış bir değişkenin tipini program çalıştığı zaman hemen atayacaktır. Eğer object türünde tanımlasaydık boxing ve unboxing işlemine uğrayacağı için performans kaybına yol açacaktır. Şimdi sorgumuza bakalım. from f in sayilar kısmında f isminde geçici bir değişken oluşturup in anahtar kelimesinden sonra sorgulanacak koleksiyonu yazdık. Bir alt satırda ise SQL’den alışık olduğumuz order by ile sıralama işlemini yapıyoruz. desc anahtar kelimesi ile sondan başa doğru bir sıralama işlemi gerçeştiriyoruz. Bir alt satırda ise oluşturduğumuz geçici değişken olan f’yi seçiyoruz ve sorgumuz bitiyor. Daha sonra ise foreach döngüsü ile ekranda gösteriyoruz.
Add comment 15 Temmuz 2008