|
LINQ – .NET Language Integrated Query ( Dil İle Bütünleştirilmiş Sorgu ) |
|
Gönderiliyor lütfen bekleyin... |
|
|
Bu makale, size LINQ projesi ile In-Memory Objects ve Generic Collections
‘lar ile nasıl çalışabileceğinizi örneklerle anlatır.
Hangi alanda olursa olsun, teknoloji çok hızlı değişim geçiriyor ve tüm bunların
nedeni insanların hayatını kolaylaştırmak. Microsoft’un vizyonu ‘bilgiye her
zaman, her yerden ve her cihazdan ulaşmak’ tı hatırlayaracağınız gibi. İşte,
Microsoft’un bu yolda attığı adımlardan biriside LINQ projesidir.
Belki bir çoğunuz LINQ adını duyduğunda Linux’a rakip yeni bir linux sürümü mü
diye düşünecektir. Çünkü arama motorlarına LINQ kelimesini girip arama
yaptırdığınızda karşınıza linux ile ilgili link seçenekleri de çıkmakta. Ama bu
projenin linux ile bir bağlantısı hok.
Peki nedir LINQ? Kod adı LINQ olan bu proje adı ‘Language Integrated Query’ yani
‘Dil ile bütünleştirilmiş sorgu’ kelimelerinin kısaltılmasıyla oluşturulmuştur.
Query kelimesine bir yazılım geliştirici olarak uzak olmasanız gerek, çünkü veri
ile çalışırken işimizi kolaylaştıran şeylerden biriside verileri
sorgulayabilmemizdir. Bunun içinde select, where gibi sorgu ifadeleri
kullanırız. Peki bunun dil ile olan alakası nedir? Kod yazarken geliştirdiğimiz
proje içindeki değerleri değişkenlerde saklarız. Değişkenlerde tutulan bu
verilerin uzun bir süre saklanması gerektiğinde dosya sistemini veya veri tabanı
sistemlerini kullanırız. İşte, bellekte tutulan bu verileri (in memory objects
ve generic collections) de artık veri tabanı sistemlerinde olduğu gibi basit
sorgu ifadeleri ile sorgulayabiliyoruz. Şu an için Visual Studio 2005 Beta 2 ve
C# Express Beta 2 size bu tür sorgular yazıp bellekte tutulan verileri
sorgulayabilmenize imkan veriyor. Tabi LINQ çatısınıda bilgisayarınıza
yüklemeniz gerekiyor. Son günlerde MSDN Subscriptions üyelerinin indirebildiği
Visual Studio 2005 Release Candidate ile bu sorguları çalıştıramıyorsunuz! Bu
çatının oturması için ve projelerimizde kullanabilmemiz için biraz daha sabırlı
olmamız gerekiyor. En azından kod adı C# Orcas olan C#’ın 3.0 sürümü ve
VB.NET’in 9.0 sürümü ile bütünleşmiş olarak karşımıza çıkana kadar.
Biraz önce dosya sistemimizde ve veri tabanı sistemimizde tutulan verilerden
bahsetmiştik. İşte LINQ bellekteki veriler dışında hem XML (XLINQ) ile hemde SQL
Server (DLINQ) ile çalışmamızı sağlıyor. XLINQ, XML verileri ile
çalışırken bu verileri hızlı ve kolay sorgulama yeteneği kazandırıyor. DLINQ ise
ilişkisel veri tabanlarıyla çalışırken bize güç ve performans sağlıyor.
Şimdi dilerseniz LINQ projemizi oluşturalım. Bu örneği çalıştırabilmek için
ihtiyacınız olan iki şeyden ilki Visual Studio 2005 Beta 2 ve ikinci LINQ
çatısı. Eğer gerekli olan araçlar bilgisayarınızda mevcutsa bir kaç adımda
aşağıda yazılı olan kodları projenize ekleyerek sonuçları inceleyebilirsiniz.
İlk olarak yeni bir proje oluşturmak için sırasıyla File menüsü altında yer alan
New menüsüne ve ardından Project seçeneğine tıklattım ve karşıma Şekil – I’ deki
gibi bir New Project penceresi açıldı.
Şeki – I : New Project penceresi.
Project types listesi altında yer alan Visual C# seçeneğini
genişlettiğimde LINQ Preview adında bir seçeneğin olduğunu görüyorum. Ve
bu seçeneğe tıklattığımda Templates listesinde LINQ projeleri oluşturmak için
kullanabileceğim Template’lere ulaştım.
İlk projemiz basit bir konsol uygulaması olacağı için My Template penceresinde
LINQ Console Application seçeneğine tıkladım ve proje adı kısmına
LINQConsoleApp1 yazarak OK butonuna tıkladım. Daha sonra Program.cs
dosyasına tıklatarak Şekil – II’deki kodların görüntülenmesini sağladım.
Şeki – II : Template ile gelen hazır kodlar.
Kodlara ilk baktığımızda dikkatimizi çeken ilk satırlar sıradan bir konsol
uygulamasından farklı olarak projemize dahil edilmiş 4, 5 ve 6.ncı satırlar
oluyor. Şimdi dilerseniz Template ile birlikte projemize referans olarak dahil
edilmiş isim uzaylarına kısaca bir göz atalım.
System.Query
: In-Memory sorguların çalıştırılması için gerekli olan sınıfları içerir.
System.Xml.Xlinq : In-Memory XML dökümanların
sorgulanabimesi için gerekli sınıfları içerir.
System.Data.DLinq : In-Memory SQL tabloların sorgulanabilmesi için
gerekli sınıfları içerir.
Bizim için bu örneğimizde gerekli olan isim uzayı
System.Query. Daha sonra sizşer için hazırlayacağım makalelerde diğer iki
isim uzayını daha detaylı bir şekilde inceleme şansımız olacak.
Şimdi projemize
Şekil – III’te yer alan kodları dahil edelim ve projemizi biraz daha
geliştirelim.
Şeki – IV : İlk LINQ projemizin ekran çıktısı.
Bu örnekten sonra bellekteki verileri sorgulama konusunda kafanızda belli bir
belirginliğin oluştuğunu düşünüyorum. Şimdi örneğimize yeni bir metod ekleyerek
nesneleri nasıl sorgulayabileceğimize bakalım.
Şeki – V : Kisiler sınıfı.
İlk olarak namespace’imizin altına Kisiler adında bir sınıf ekledim. Ve
bu sınıf için bazı özellikler tanımladım.
Şeki – VI : NesneselSorgu örneği.
Bir sonraki adımda ise mevcut Program sınıfımın içerisine
NesneselSorgu adında yeni bir metod ekledim. Ve biraz önce tanımladığım
Kisiler sınıfını kullanarak yeni bir nesne tanımladım ve bu nesnenin
özelliklerine bazı değerler atadıktan sonra ilk örneğimizde olduğu gibi
nesnemizi sorguladım. 33.ncü satırda da görülebileceği gibi Yas degeri 23’den
büyük ve 28’den küçük olan değerleri seçtim ve ToUpper() metodunu
kullanarak seçili değerin tüm harflerinin büyütülmesini istedim. Main metodumda
bir değişiklik yaptım ve SayisalSorgu
metodu yerine NesneselSorgu metodunun çağrılmasını sağladım. Projeyi
çalıştırmak için F5 tuşuna bastığımda ise karşıma aşağıdaki gibi bir konsol
ekranı çıktı.
Şeki – VII : NesneselSorgu örneğimize ait ekran çıktısı.
Daha sonra sizler için hazırlayacağım makalelerimde XLINQ ve DLINQ konularına
daha detaylı olarak yer vermeye çalışacağım. Makalenin başında da belirttiğim
gibi Microsoft’tan edineceğiniz Visual Studio 2005 Beta 2 ve LINQ çatısı ile
sizde bu örnekleri yazıp çalıştırabilir ve sonuçlarını inceleyebilirsiniz. Bir
başka makalede görüşmek dileğiyle.
Örnek Uygulama İçin Tıklayın
Mutlu Kurtbaş
[email protected]
Makale:
LINQ – .NET Language Integrated Query ( Dil İle Bütünleştirilmiş Sorgu ) C#, Visual C# ve .NET Mutlu Kurtbaş
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|