Bu makalemizde SQL’deki LIKE komutunun LINQ’teki uygulanma yöntemlerini inceleyelicegiz.
Kitap bilgilerimizin bulundugu kitapbilgisi isimli bir tablomuzun oldugunu düsünelim. Bu tabloda isminin içerisinde “server” geçen kitaplarin isimlerini listelemek istiyoruz. C# 2.0’da bunun için yazacagimiz kod su sekilde olurdu :
“ SELECT adi FROM kitapbilgisi WHERE adi LIKE '%server%' “
LINQ’te kullanirken iki yöntem uygulayabiliriz. Ilk yöntem Contains metodu, ikinci yöntem ise LIKE metodu.
Uygulamamiz için öncelikle bir adet DataClasses ekliyoruz ve veritabani baglantisi olusturup kitapbilgisi tablosunu DataClasses1 içerisine yerlestiriyoruz:
Temel islemler (DataClasses ekleme ve veritabani baglantisi) için bu linkte bulunan makaleyi inceleyebilirsiniz.
Öncelikle bu islemi Contains metodu ile nasil yapacagimizi inceleyelim:
private void ContainsIleVerileriAl()
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var kitaplar = from kitap in dc.kitapbilgisis
where kitap.adi.Contains("server")
select kitap.adi;
foreach (string kitap in kitaplar)
listBox1.Items.Add(kitap);
}
|
where kitap.adi.Contains(textBox1.Text) : WHERE kosulunda kitabin adinin içerisinde "server" stringi var olanlarin adi bilgilerini kitaplar degiskenine ekler.
Simdi de Like metodu ile nasil yapacagimizi inceleyelim. Bunun için öncelikle using bölümüne
using System.Data.Linq.SqlClient; ‘i ekliyoruz.
private void LikeIleVerileriAl()
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var kitaplar = from kitap in dc.kitapbilgisis
where SqlMethods.Like(kitap.adi, "%server%")
select kitap.adi;
foreach (string kitap in kitaplar)
listBox1.Items.Add(kitap);
}
|
where SqlMethods.Like(kitap.adi, "%server%") : SqlMethods sinifi, System.Data.Linq.SqlClient namespace’i içinde yer almaktadir. Adindan da anlasilacagi gibi bazi SQL metotlarini içinde bulunduran bu sinifin Like metodunu kullaniyoruz. Ilk parametre, tablonun hangi sütununda çalisilacagini gösterir. Ikinci parametre ise arama kriterini gösterir.
Uygulamamizin ekran çiktisi asagidaki gibidir:
Veysel Ugur KIZMAZ