splash
SOLDAKİ ?
Önceleri atari oyunlarına hevesli olan bu arkadaşınız, teknik lise bilgisayar bölümüne yazıldıktan sonra dikkatini bilgisayar ve yazılım...(Devamı...)
Yazar: Serdar BÖLÜM Tarih: Mart 7th, 2010

Sql Server’da durum nasıl bilmiyorum ama geçenlerde Oracle’da şöyle bir durum farkettim: Where kısmında kullandığımız NOT IN komutu, IN komutunun birebir tersi şeklinde bir sonuç getirmeyebiliyor. Şart kısmında belirttiğimiz değerler içinde NULL olan kayıt varsa işler oldukça değişebiliyor. Küçük bir örnekle açıklamak gerekirse:

 

Linq Sorgusunu Datatable’a Çevirme

Yazar: Serdar BÖLÜM Tarih: Nisan 18th, 2009

Yeni teknolojilerden mahrum kalmamak adına üzerinde çalıştığım bir projede Linq To Sql kullandım ve bayağı bir faydasını da gördüm. Veritabanına ulaşmak, oradan veri çekmek, veri ekleme, silme, güncelleme gibi işlemler inanılmaz kolaylaştı.

Fakat her ilacın yan etkisi olduğu gibi Linq To Sql’in de bize yaşattığı aksaklıklar oldu tabi. Bu aksaklıklar projenin bayağı aksamasına da sebep oldu. Tabi aksaklıkların Linq’dan değil de benim acemiliğimden ya da yeniliklere adapte olamadığımdan kaynaklandığını da düşünebiliriz. Fakat şimdi değineceğim konuyu biraz irdelerseniz bu sorunların aslında bir çok kişi tarafından yaşandığını görürsünüz.

Projede datalist içinde sayfalama sistemi yapmam gerekiyordu. Bunun için de PagedDataSource(bkz. yazgeliştir) nesnesini kullanacaktım. Fakat bir sorun vardı. Yazdığım Linq sorgusunu PagedDataSource’a bağlayamıyordum. Önce normal DataTable’a, oradan da PagedDataSource’a bağlayayım dedim ama nafile. Sürekli hata mesajlarıyla karşılaşıyordum. Bu konuyu araştırmak üzere Google amcaya başvurduğumda sorunu çözmek uzun sürmedi ama bir şeyi farkettim ki, bu konuda(Linq sorgusunu Datatable’a dönüştürme) hali hazırda bir metod, sınıf vs. yok. Sorunun çözümü için herkes kendine göre bir metod yazıp işini görmüş. Ben de kendi metodumu yazmak yerine hazıra onmayı tercih ettim ve buradan metodu kopi peyst yapıp vb diline çevirerek kullandım :) .

Metodun c# versiyonunu buradan alabilir veya benim hazırladığım vb versiyonuna da aşağıdan bakabilirsiniz:

Public Function ToDataTable(ByVal ctx As System.Data.Linq.DataContext, ByVal query As Object) As DataTable
Dim cmd As IDbCommand = ctx.GetCommand(query)
Dim adapter As New SqlDataAdapter
adapter.SelectCommand = CType(cmd, SqlCommand)
Dim dt As New DataTable("sd")
Try
cmd.Connection.Open()
adapter.FillSchema(dt, SchemaType.Source)
adapter.Fill(dt)
Finally
cmd.Connection.Close()
End Try
Return dt
End Function

Kullanım Şekli:

Dim tmpTags As New UI_Class.UIData
Dim query = From t In tmpTags.LU_TAGs _
Where t.VALID = 1 _
Group t By t.DS_TAG Into Count() _
Select DS_TAG, TAG_COUNT = Count
Dim dtTemp As New PagedDataSource
dtTemp.DataSource = ToDataTable(tmpTags, query).DefaultView

Bu yazının da sonuna böylece gelmiş olduk. İnşallah faydası olur temennisiyle; görüşmek üzere.

Etiketler: , , , ,



Benzer Yazılar
Kategori: ASP.NET

Yorum Yap,Fikrini Paylaş