5 Eylül 2008 Cuma

LINQ

LINQ (Language Integrated Query) : .net 3.0 ile gelen bir yenilik. Veri tabanında select işlemleri yapmayı sevenler için süper bir özellik. Normalde yazmamız çok zaman alacak işlemleri LINQ sayesinde çok kısa bir zamanda yapabiliyoruz. Değişik çeşitleri var LINQ, LINQ to SQL, LINQ to XML vb...
Ben şimdi genel anlamda proje içinde dizilerde yapacağımız bazı örnek sorgular yapacağım başlangıç olsun diye sizinde dikkatinizi çekecektir ne kadar kolay olduğu. Belki de buradan görüp de öğrenmeye başlayanlar olabilir diye de bir başlangıç yapayım dedim ;).
Öncelikle şunu belirteyim var değişkeni. Javascriptte bulunan var değişkeni burada da aynı mantıkla kullanılıyor içinde her türlü veri tutabilen bir nevi object nesnesi tarzında bir değişken.

int[] sayilar={3,2,5,6,1,2,8,9,0};
var bulunan = from n in sayilar
where n <= 6 orderby n
select n;
6 dan küçük sayıları bularak bunları küçükten büyüğe sıralayan kodumuz bu kadar. Tamamen anlaşılır bir şekilde ve select, from, where kalıbına çok benzer.

string[] names = { "aHmet", "uZuN", "IsTanBul", "bUrSA" ,"AHmet"};
var withLowerUpperLetters = (from n in names
orderby n
select new { Lower = n.ToLower(), Upper = n.ToUpper() }).Distinct();
string sonuc = "";
foreach (var v in withLowerUpperLetters)
{
sonuc += v.Lower + " ";
}
sonuc += "\n";
foreach (var v in withLowerUpperLetters)
{
sonuc += v.Upper + " ";
}
MessageBox.Show(sonuc);
Diziyle verilen isimleri alıp onları büyük ve küçük harflere çeviren LINQ ve devamı. Aynı olan isimleri ikinciye almaz.

son örnek olarak;
string sonuc = "";
int[] sayilar = { 0, 2, 3, 7, 8, 9, 6, 4, 1 };
var numberGroups = from n in sayilar
group n by n % 5 into g
select new { g.Key, numbers = g };
foreach (var g in numberGroups)
{
sonuc += g.Key + " kalanı verenler ";
foreach (var n in g.numbers)
{
sonuc += n+" ";
}
sonuc += "\n";
}
MessageBox.Show(sonuc);
sayilar dizisindeki elemanları 5'e bölümünden kalan sayılarına göre gruplayan LINQ.
Şimdilik bu kadar. LINQ to SQL de görüşmek üzere. Herkese kolay gelsin.

Hiç yorum yok: