Merhabalar,
.NET Framework 3.5 ile beraberinde gelen ve devrim niteliğinde bir yenilik olan LINQ(Language Integrated Query) özelliğimize kısa bir giriş yaparak Dil İle Bütünleştirilmiş Sorgularının gücüne keşfedelim.
Language Integrated Query kısaltmasından oluşan ve türkçe karşıtı Dil İle Bütünleştirilmiş Sorgular manasına gelmektedir. Biraz daha açmak gerekirse, Veri üzerinde sorgularla çalışabilmek programlanılabilirlik açısından büyük önem taşımaktadır. Bunun üzerine LINQ geliştirilerek bizlere sunuldu ve LINQ ile kodlarımızla doğrudan veriye sorgular yazarak veriden istediğimiz sonuçları almamızı sağlıyor. Durum itibariyle böyle olunca yazılımcılara büyük bir kolaylık sağlanmış olmakla beraber, Performans artışı da sağlıyor.
Artık Basit Örneklerle Giriş Yapalım;
Global Değişkenlerimiz:
![]() |
Açıklama:
| Global değişkenlerimizi, örneklerde linq teknolojisini daha iyi anlaşılır hale getirmek için sabit kullanmak istedim. Dolayısıyla ortak bir alanda global olarak tanımladım. |
![]() |
Çıktı:
Açıklama:
| İlk örneğimizde Bilinçsizce türlendirilmiş yerel değişkenimiz olan var tipi sizlere yabancı bir nesne olarak gelebilir. JavaScript kullananlar bilirlerki bilinçsizce türlendirilmiş değişkenlerimize istediğimiz bir tipin değerini atayabiliriz. Örnek vermek gerekirse, 123 gibi tam sayı verirsek int tipinde değer almış olur, ‘abc’ dersek char tipinde değer almış olur, “abc” dersek string tipinde değer almış olur, true|false dersek bool tipinde değer almış olur vs…. Daha önce var değişkenini bilmeyenler için kısa bir açıklama yaptım. Umarım çabuk ısınırsınız…Örneğimizi açıklamak gerekirse, bilinçsizce türlendirilmiş var tipinde islem adında bir değişken tanımladık ve değerine Sql’cilere tanıdık gelen bir yazım ifadesi yazdık. from s in Sayilar // s burada geçici bir ön değişkenimiz ve Sayilar dizimizi s değişkenimize bildiriyoruz select s // bu kısımda ise geçici ön değişkenimiz olan s değişkenimizin içindekileri seçiyoruz. ve sizinde tahmin ettiğiniz gibi Sayilar dizimizde ne varsa hepsini ekrana teker teker yazdırıyoruz. |
![]() |
Çıktı:
Açıklama:
| Artık bilinçsizce türlendirilmiş var tipimizi biliyorsunuz, Global değişkenlerimizide gördünüz ve hemen hemen tüm örneklerde aynı adımlar var o yüzden oluşturduğumuz değişkenleri tek tek bahsetmek yerine linq teknolojisi adına gelen yeni yazım türlerinden bahsedeceğim…Biliyorum aynı sql gibi olmuş diyorsunuz, eğer öyle diyorsanız daha çok diyeceksiniz bu örneğimizde Sayilar dizimizi ele aldık ve bir koşul(where) koyduk, koşulumuz herkesin görebildiği gibi 5 sayısına eşit yada büyük olan tüm sayıları getir dedik, getir dedik ama bide sıralama yap demişiz ne kadar kolay görüyorsunuz dimi |
![]() |
Çıktı:
Açıklama:
| Bir önceki örneğimizden pek bir farkı yok. Sadece descending (çok aza) yerine ascending(azdan çoğa) olarak sıralama yaptık.. |
![]() |
Çıktı:
![]() |
Açıklama:
| Sehirler dizimize bakarsanız birbirini tekrar eden şehirler olmasına rağmen Distinct() methodunu kullanarak tekrarlamadan tüm şehirlerimizi getirdik ve ekrana yazdırdık… |
![]() |
XML örneğimizi biraz daha kompleks hale getirerek bir tane dropdownlist nesnesi ekleyelim ve items(elemanlarına) TCMB’dan aldığımız tüm kur bilgilerinin Isim elementlerini ekleyelim.
![]() |
oluşturduğumuz methodu sayfmızın Page_Load olayına ekleyelim.
![]() |
Aşağıdaki resimde gördüğünüz gibi, sayfamız yüklendiğinde tüm Kur isimlerini dropdownlist nesnemizde yüklü bir şekilde görebiliyoruz.
![]() |
Dropdownlist nesnemize elemanları eklerken sıralı bir şekilde eklenmesini istersek,
ddl_Doldur() methodumuzda bilinçsizce türlendirilmiş islem değişkenimize, hemen select ifadesinden önce;
“orderby k.Element(”Isim”).Value” ifadesini eklersek default olarak ascending olarak sıralanır.
Şimdi örneğimizin asıl yerine gelelim.Dropdownlist nesnemizde seçili olan Kur adının, kur bilgilerini getirelim..
Kod(Örnek 5):
![]() |
çıktı almadan önce dropdownlist nesnemizde STERLİN elemanını seçtim.
![]()
Çıktı:
![]() |
Açıklama:
| Burada ilk önce sorulacak soru XDocument nesnesi nedir? İlk aşamada XDocument nesnesi XML dökümanı içermekle sorumlu olduğunu bilmeniz yeterli olacaktır. Daha önce XML verileriyle hiç uğraşmamışsanız bu örneği anlamanız biraz zaman alabilir. XML verisi ile daha önce uğraşanlar ise Kod kısmını inceleyerek ne yaptığımızı kolayca anlayabilirler. burada sadece where koşuluna bakmanızı istiyorum. Dikkat ederseniz Isim elementinin dropdownlist nesnemizde secili olan elemanın textine eşit olan kurun, kur bilgilerini getiriyoruz… |
![]() |
Çıktı:
Açıklama:
| Count() methoduyla toplamda kaç tane Kur bilgileri var, Onu Saydık. |
![]() |
Çıktı:
Açıklama:
| Distinct() Methodu ve Count() methodunu kullanarak toplamda Kaç Tekil Şehir Adı var onu saydık ve getirdik. |
![]() |
Çıktı:
Açıklama:
| Sum() methoduyla Sayilar dizimizin elemanlarının toplamını getirdik. |
![]() |
Çıktı:
Açıklama:
| Min() methoduyla, Sayilar dizimizdeki en küçük sayıyı getirdik… |
![]() |
Çıktı:
Açıklama:
| Max() methoduyla Sayilar dizimizdeki en büyük sayıyı getirdik.. |
![]() |
Çıktı:
Açıklama:
| Max() methoduna bir takım parametreler gönderek, Sehirler dizimizdeki, en uzun karakterli şehrin uzunluğunu getirdik. |
![]() |
Çıktı:
Açıklama:
| Average() Methoduyla Sayilar dizisindeki sayiların ortalamasını getirdik |
![]() |
Çıktı:
![]() |
Açıklama:
| Concat() methoduyla Sayilar dizimizi ve Sayilar2 dizimizi birleştirerek getirdik.. |
![]() |
Çıktı:
Açıklama:
| Any() Methoduyla, Contains() parametresinin içerisinde girdiğimiz stringi, Sehirler dizimizin tüm elemanlarına bakarak, eğer dizi içinde bulursa true bulumazsa false değeri dönderir. |
![]() |
Çıktı:
Açıklama:
| First() methoduyla Sehirler dizimizdeki ilk elemanı getirdik… |
![]() |
Çıktı:
Açıklama:
| Intersect() methoduyla iki dizi arasında çakışan elemanları getirdik.. |
![]() |
Çıktı:
![]() |
Açıklama:
| Take() methodunun parametresine 5 gönderek, Sayilar dizimizin ilk 5 elemanını getirdik… |
![]() |
Çıktı:
![]() |
Açıklama:
| Skip() methodunun parametresine 5 gönderek, Sayilar dizimizin ilk 5 elemanından sonraki elemanları getirdik… |
Bu makalemizde Giriş seviyesind,e Linq ile bir çok yeni sorgulama ve yeni yazım ifadelerini tanımış olduk.
Çalışma projesini buradan indirebilirsiniz.
Bir sonraki makalede görüşmek dileğiyle..
Serkan PEKTAŞ
Programlama ile Web Tasarım mesleğine 14 yaşında başlamış olup, Gelişen teknoloji ile hayatıma yön vermeye çalıştım. Öğrenim hayatımdan dolayı Kurumsal şirketlerde çalışma zamanı bulamadım. Kişisel beceri ve bilgilerimle SQL, ASP.NET, XML, CSS, JS, AJAX teknolojilerini kullanabilme başarısını göstermekteyim...[Devam]
Onur
21 Temmuz 2008 | 11:18:30
Mükkemmel bir makale. Anlatımınıza hayran kaldım