Linq To DataTable

Şubat 10, 2012

 

Merhaba arkadaşlar , Linq  C# 3.0 sürümü ile aramıza katılmış bir sorgulama yapısıdır.Açılımı dil ile bütünleşik sorgulama anlamına gelmektedir.Biraz daha açalım örneğin : Herhangi bir veri tabanındaki verileri sorgulama için t-sql kullanıyoruz peki buradaki tüm özel kelimeleri (ketword) C# tarafındada kullansak nasıl olurdu acaba ? sorusunun cevabı Linq ‘ tir.Linq ile C# tarafında nesneleriniz üzerinde sorgula işlemleri gerçekleştirebilirsiniz.Herhangi bir List tipinde bir değişkeniniz üzerinde belirliyeceğiniz kriter’lere göre yeniden şekillenmesini isteyebilirsiniz veya DataTable nesnenizdeki verileri tekrardan sorgulayarak isteğinize uyan verileri kullanmak isteyebilirsiniz.Linq genel olarak üzerine kitaplar yazılacak kadar geniş bir konu olduğu için biz sadece Linq To DataTable ile ilgileniyor olacağız.Yeni sorgu sonuçlarına her ihtiyacınız olduğunda veri tabanına gidip tekrardan sorgulamaktansa daha önceden DataTable nesnemizde duran verileri kod tarafında hiç sql ‘e gitmeden sorgulasak iyi olurdu galiba hemen bir kaç örnekle konuyu daha anlaşılır hale getirelim.Örnek olması açısından Northwind veri tabanındaki Customers tablosunu sorgulayıp DataTable nesnemize aktaralım

 

 

 

 

Konu dışı olduğu için hata yönetimi gibi bazı noktalara dikkat edilmeden yazılan bu method yardımı ile Customers tablomuzu sorgulayalım ve geri dönelim.Küçük bir ip uçu : sorgularınızda * kullanmanızı tavsiye etmem neden derseniz yavaşlamaya neden olmaktadır.İlk Linq sorgumuzu yazalım ve yapısını anlamaya çalışalım

 

 

 

 

İlk olarak GetCustomers method’umuzdan DataTable nesnemizi dtCustomers değişkenimize alalım ve daha sonra bu DataTable üzerinde sorgulama işlemini gerçekleştirelim. Yazım olarak from ile başlıyoruz daha sonra değişkenimizi belirliyoruz ve DataTable nesnemizin AsEnumerable() method’unu çağırıyoruz ve select diyerek işlemimizi bitiriyoruz.Bu yapı sadece sorgulama işlemi için yeterli ama şu an linq ‘in gücünü tam anlamı ile kullanmadık aslında.Şimdide sorgulama işlemi sırasında koşul belirtebileceğimiz bir sorgu yazalım

 

 

 

 

where ile aynı sql deki gibi koşulumuzu belirtiyoruz c.Field dediğimiz kısım ise DataTable nesnemizdeki kolon adıdır <string> ile tipini belirliyoruz.Bu sorgu ile ContactName ‘leri Hanna Moos olanları listeledik.Bu isimler Northwind veri tabanından alınmıştır.Sorgumuzu biraz daha geliştirelim

 

 

 

 

Bu sorguda ise ülkesi Brazil olanları sorguladık ama geriye sadece 3 tane kolon bilgisini döndürdük select new {  }; yapısı ile bunu başardık buradaki CustomerID veya CompanyName bilgileri üst tarafta tanımlanmış herhangi bir değişken değildir o an oluşturulmaktadır.

 

 

 

 

orderby ifadesinin ise kullanımı bu şekildedir Field ‘ın sonuna ascending veya descending olarakta belirtebilirsiniz.

 

 

 

 

Bu sorguda şehri Madrid olanların sadece CompanyName ‘ini geri dönüyoruz.

 

 

 

 

orderby ve where aynı sorguda kullanımı bu şekildedir geriye ContactName , City ve Country alanlarını dönüyoruz.

 

 

 

 

 

 

Sql sorgularımızdaki join işlemini aynı şekilde linq ile de yapabilekteyiz bunun için 2 tane örnek DataTable nesnesi tanımladım sembolik olarak  Müşterileri ve Siparişlerini tutan dtMusteriler ‘in ID alanı ile dtSiparisler ‘in MusteriID si karşılaştırılıp ileri bir tarih için sipariş verenlerden fiyatı 5000 tl’nin üzerinde olanların bilgileri çekilmiştir.

 

 

Bu bilgilere ise şu şekilde ulaşabiliriz

 

 

 

İyi çalışmalar

 

 

 

 

posted in C# by gokhan

Follow comments via the RSS Feed | Yorum yapın | Trackback URL

2 Comments to "Linq To DataTable"

  1. kerim wrote:

    iyiymiş :)

  2. erhan wrote:

    Merhaba,

    yazının başlığı “Linq To DataTable”.

    iyi de linq sonucu nerede datatable’a aktarılıyor?

    var query7 = … ifadesinde query7 bir datatable değildir.

    sonucun datatable veya -var query7- olup olmamasında esas fark, typed dataset/datatable bir schema’ya sahiptir.

Leave Your Comment

*

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org