June 10, 2008
@ 04:09 PM

let ifadesi linq ile sorgulama yaparken değişken tanımlamayı sağlar. Örneğin aşağıdaki gibi bir sorguya ekleme yapacak olursak ;

IEnumerable<string> sonuc = (from a in isimler where (a.StartsWith("B"))

select a

);

foreach (string s in sonuc)

{

Console.WriteLine(s);

}

Bu sorgu içerisinde (her ne kadar da böyle yapılmaması gereksede örnek olsun diye yapıyorum) isimlerin başına "Sayın" ifadesi eklemek istersek ve değişken kullanıcaz diye tutturursak :) let ifadesi kullanmak gerekir.

IEnumerable<string> sonuc = (from a in isimler where (a.StartsWith("B"))

let abc = "Sayın "

select abc + a

);

foreach (string s in sonuc)

{

Console.WriteLine(s);

}

 


 
Categories: .Net | Csharp | Linq

OrderBy sql server'dan bildiğimiz süzme işlemini yapmaktadır. OrderByDescending ise tersten süzme işlemi yapmaktadır.

ThenBy kelimesi ise orderby içerisinde kullanılan 2.cil kriterleri temsil eder. Daha açıklayıcı bir deyişle Sql Server üzerinden bildiğimiz Order By Deneme, Deneme2  cümlesindeki Deneme2'yi temsil etmektedir. Örnekleri aşağıda bulabilirsiniz.

            static string[] isimler = new string[] {"Okan","Yalçın", "Bora","Güneş","Boran","Ekin","Hızır" };

            static void OrderByMetodu()

            {

            IEnumerable<string> sonuc = from r in isimler orderby r select r;

            foreach (string s in sonuc)

            {

            Console.WriteLine(s);

            }

            }

            static void OrderByDescendingMetodu()

            {

            IEnumerable<string> sonuc = from r in isimler orderby r descending select r;

            foreach (string s in sonuc)

            {

            Console.WriteLine(s);

            }

            }

            static List<Musteri> musteriListesi = new List<Musteri>() {new Musteri{Ad="Bora", Soyad="Burgucugil"}, new Musteri{Ad="Bora", Soyad="Beken"} };

 

 

            static void ThenByMetodu()

            {

 

      

 

               var sonuc = musteriListesi.OrderBy(a => a.Ad).ThenBy(a => a.Soyad);

 

               foreach (Musteri m in sonuc)

               {

                   Console.WriteLine(m.Ad + " " + m.Soyad);

               }

              

           }

 

            static void ThenByDescendingMetodu()

            {

 

                var sonuc = musteriListesi.OrderBy(a => a.Ad).ThenByDescending(a => a.Soyad);

 

               foreach (Musteri m in sonuc)

               {

                   Console.WriteLine(m.Ad + " " +  m.Soyad);

               }

            }


 
Categories: .Net | Csharp | Linq

June 10, 2008
@ 03:14 PM

Select metodu bir koleksiyondan veya diziden verileri listelemeyi, seçmeyi sağlar. SelectMany metodu ile arasında fark select keyword'u sadece tek boyutlu kaynak üzerinden çalışır.

static string[] isimler = new string[] {"Okan","Yalçın", "Bora","Güneş","Boran","Ekin","Hızır" };

IEnumerable<string> sonuc = from a in isimler where (a.StartsWith("B")) select a;

foreach (string s in sonuc)

{

Console.WriteLine(s);

}

SelectMany ise birden fazla boyutu olan kompleks olan koleksiyonlar için kullanılır. Örneğin :

public class Musteri

{

public string Ad { get; set; }

public List<string> Kitaplar {get;set;}

}

Sorgulama yapmak için :  

Musteri[] bilgiler ={new Musteri { Ad = "Okan ",Kitaplar = new List<string>{"Sql Server", @"C#"}},

new Musteri { Ad = "Ekin ",Kitaplar = new List<string>{"Mobile Applications", "Linq"}},

new Musteri { Ad = "Yalçın, Kitaplar = new List<string>{"Sigara Bırakma Yöntemleri", "Rakı içme Teknikleri"}}};

IEnumerable<string> sonuc = bilgiler.SelectMany(a=> a.Kitaplar);

foreach (string s in sonuc)

{

Console.WriteLine(s);

}


 
Categories: .Net | Csharp | Linq

June 10, 2008
@ 02:41 PM

C# 3.5 ile gelen extension metotlardan olan Union metodu verilen 2 kaynağı birleştirmeyi sağlar. Bu birleşim sonucu her 2 koleksiyondaki ortak elemanlar tekrarlanmaz farkı elemanlar listelenir. Örneğin :

int[] sayilar = new int[] { 1, 567, 34556, 487, 3, 5, 15, 7, 9 };

int[] sayilar2 = new int[]{3,7,9,1,12312365,17};

IEnumerable<int> sonuc = sayilar.Union(sayilar2);

foreach (int i in sonuc)

{

Console.WriteLine(i);

}

Bu çıktı sonucunda sayilar2 dizisindeki bazı sayılar ilk dizide de olduğu için ekranda gösterilmediği görülmektedir.


 
Categories: .Net | Csharp | Linq

June 10, 2008
@ 12:50 PM

Artık Linq ile Xml belgeleri üzerinde çalışmak oldukça kolaylaştı. Örneğin :

XElement dosyam = XElement.Load(@"C:\\Calisanlar.xml");

dosyam.Add(new XElement("Kisi", new XElement("Ad", "Okan"), new XElement("Soyad", "Tekeli")));

dosyam.Add(new XElement("Kisi", new XElement("Ad", "Yalçın"), new XElement("Soyad", "Uzun")));

dosyam.Add(new XElement("Kisi", new XElement("Ad", "Mahir"), new XElement("Soyad", "Gündüz")));

dosyam.Save(@"C:\\Calisanlar.xml");

Eğer Attribute eklemek isterseniz :

XElement dosyam = XElement.Load(@"C:\\Calisanlar.xml");

dosyam.Add(

new XElement("Kisi",

new XElement(

"Ad",

"Okan",

new XAttribute("Id",1)),

new XElement("Soyad", "Tekeli")));

dosyam.Add(new XElement("Kisi", new XElement("Ad", "Yalçın"), new XElement("Soyad", "Uzun")));

dosyam.Add(new XElement("Kisi", new XElement("Ad", "Mahir"), new XElement("Soyad", "Gündüz")));

dosyam.Save(@"C:\\Calisanlar.xml");


 
Categories: .Net | Csharp | Linq

Sadece entity katmanı sayesinde veritabanı üzerine işlem yapabilmek için DataContext sınıfı size yardımcı olacaktır. Yalnız entity üzerine attribute ile çalışmak gerekiyor. Örnek bir kullanım için aşağıdaki kodu inceleyebilirsiniz.

[Table(Name="Person.Contact")]

public class Contact

{

[Column(Name="FirstName")]

public string FirstName { get; set; }

[Column(Name = "LastName")]

public string LastName { get; set; }

}

Verileri görüntülemek için kısa yoldan herhangi bir ek katman veya sorgu yazmadan :

DataContext dt = new DataContext("server=.;database=AdventureWorks;uid=sa;pwd=**");

Table<Contact> ct = dt.GetTable<Contact>();

var result = from c in ct where c.FirstName select new { c.FirstName, c.LastName };


 
Categories: .Net | Csharp | Linq