LINQ (Language Integrated Query) i ilk defa 3.0 versiyonuyla duyduk. Dile entegre olmuş yapısıyla hafızadan yada bir dış kaynaktan verileri sorgulayabilmemizi sağlamaktadır. Artık Visual Studio 2008 ile herhangi bir proje geliştirmek istediğimizde System.Linq in otomatikman projemize eklendiğini görmekteyiz. Tüm konuşulanları yada söylenenleri bir tarafa bıraksak bile sırf System.Linq in bu şekilde bill amca tarafından projemize eklenmesi bile artık LINQ in yazılımda bir vazgeçilmez olduğunu bize göstermektedir. Yazılım hayatımızın her anında LINQ ile yapacak birşeyler vardır :)
Makalemizin amacı çok fazla laf kalabalığı yapmadan LINQ ile tanışıp kaynaşmaktır. Yazılımda ise tanışma bildiğimiz üzere Merhaba Dünya ile olmaktadır. Bizde bu klasiği bozmayalım dedik.
SQL kullananlar LINQ a hemen aşina olacaklardır. Syntax olarak oldukça birbirine benzemektedirler. SQL ile veritabanındaki tablolarımıza sorgu atabiliyorduk, LINQ ile IQueryable arayüzü ile sorgu yapıyoruz.
Şimdi ilk programımıza geçelim.
Vs2008 de yeni Windows Application açıyoruz. Üzerine bir buton ve birde DataGridView sürükleyip bırakıyoruz.

Merhaba dünyayı classımızın en başına constant olarak tanımlıyoruz:
private const string MYSTRING = "Merhaba Dünya :)";
Ve button1 e çift tıklayıp click olayına şu kodları yazıyoruz:
var myChars = from c in MYSTRING.ToCharArray()
select new { harf = c };
dataGridView1.DataSource = myChars.ToList();

F5 e bastığımızda Linq a yazılımsal olarak adım atmış oluyoruz ;)

Madem ilk linq programımızı yazıyoruz biraz kurcalayalım olayı. İstediğimiz şekilde sorgu atıp istediğimiz gibi eğip bükebilecekmiyiz bakalım.
Mesela aradaki boşluk karakterlerini kaldırmak istiyoruz:
private void button1_Click(object sender, EventArgs e)
{
var myChars = from c in MYSTRING.ToCharArray()
where c!=' '
select new { harf = c };
dataGridView1.DataSource = myChars.ToList();
}
Şimdide MYSTRING içindeki harfleri tersten sıralasın (ve boşluk olmasın):
private void button1_Click(object sender, EventArgs e)
{
var myChars = from c in MYSTRING.ToCharArray()
where c!=' '
orderby c descending
select new { harf = c };
dataGridView1.DataSource = myChars.ToList();
}
Boşluk olmasın, tersten sıralasın ve büyük harflerle yazsın:
private void button1_Click(object sender, EventArgs e)
{
var myChars = from c in MYSTRING.ToCharArray()
where c!=' '
orderby c descending
select new { harf = c.ToString().ToUpper() };
dataGridView1.DataSource = myChars.ToList();
}
Aynı şekilde sol tarafında bir column daha ekleyelim ve bundada sıra numarasını göstersin
private void button1_Click(object sender, EventArgs e)
{
int k = 0;
var myChars = from c in MYSTRING.ToCharArray()
where c!=' '
orderby c descending
select new { sira=++k, harf = c.ToString().ToUpper() };
dataGridView1.DataSource = myChars.ToList();
}
Harf ve sıramızı belirten kendi sınıfımızı oluşturalım ve bu sınıfla linq uygulayalım:
class clsSiraHarf
{
public int Sira { get; set; }
public char Harf { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
int k = 0;
var myChars = from c in MYSTRING.ToCharArray()
where c != ' '
orderby c descending
select new clsSiraHarf() { Harf = c, Sira = ++k };
dataGridView1.DataSource = myChars.ToList();
}
}
Bu sadece bir Merhaba dünya olduğu için fazla derinlere inmeye gerek yok. Linq in Ne olduğunu ve nasıl kullanıldığını gösterebildiysem ne mutlu.
Diğer linq yazılarında görüşmek üzere,
İyi günler...
Gökhan Köseoğlu
8 kişi tarafından 4.1 olarak değerlendirildi
- Currently 4,125/5 Stars.
- 1
- 2
- 3
- 4
- 5