LINQ (Language Integrated Query) ile sorgu yazmak için kullanabileceğimiz 2 farkı yöntem bulunuyor. Bunlardan birincisinin adı Linq Syntax‘tır. Bu arada LINQ ile verimli çalışabilmek için Entity Framework kullanmak gereklidir. Çünkü entity Framework bizleri, veri tabanı nesnelerinden kurtarıp, kendi objelerimizle çalışma imkanı sunmaktadır. Elimizdeki bu objelerle çalışırken hayatımızı kolaylaştıracak olan sorgular da linq sorgularıdır.
Linq Syntax’un yapısı sanki SQL sorgusu yazar gibidir.
Farzedelim ki, elimizde yine bir Ogrenci listesi olsun.
List<Ogrenci> list = new List<Ogrenci>(); list.Add(new Ogrenci { Id = 1, Ad = "Emre" }); list.Add(new Ogrenci { Id = 2, Ad = "Ahmet" }); list.Add(new Ogrenci { Id = 3, Ad = "Mehmet" });
Ad property’sinde, “m” harfi geçen öğrencilerin listesini Ad’a göre sıralanmış şekilde bize getiren sorguyu LINQ Syntax ile yazalım.
var sorgu = from ogr in list where ogr.Ad.Contains("m") orderby ogr.Ad select ogr;
Tıpkı Sql sorgusu gibi değil mi ? Ancak burada cümleyi sanki tersten kuruyoruz. SQL Cümleleri genelde “select” ile başlarken, burada select ile bitiyor. Bu şekilde yazılıma LINQ Syntax deniyor. Sizler kendi bilgisayarınızda, from yada where komutunu yazdığınızda, Visual Studio altını kırmızı çizer, yada renklendirmezse, ctrl+. yaptığınızda, sizin için Linq namespace’ini ekleyecektir ve hata gidecektir. Ancak bir çok yeni version .net projelerinde, linq zaten otomatik eklenmiş geldiği için bu hatayı kolay kolay almayacaksınız.
Şahsen benim daha çok sevdiğim yazım şeklidir. Kullanımı daha basit gelmektedir. Sanırım, her şeyi tek satırda halletmek hoşuma gittiği için bu yöntem daha sıcak geliyor.
Elimizdeki bir Collection’ın ismini yazıp nokta koyduğumuzda Visual Studio bizlere bir sürü metot sunmaktadır.
Bu metotlar zincirleme bir şekilde kullanılarak istenilen sorgu elde edilebilir. Az önce yazmış olduğumuz sorguyu Extension Methods tekniği ile yazmaya kalkarsak, şöyle bir görüntü ortaya çıkacaktır.
var sorgu= list.Where(ogr => ogr.Ad.Contains("m")).OrderBy(ogr => ogr.Ad);
Gördüğünüz gibi, önce Where kullandık, ondan bize gelen sonuclar için nokta koyup, bu sefer OrderBy’ı çağırdık. Böylelikle içerisinde “m” harfi geçen kayıtları, Ad’a göre sıralanmış bir şekilde elde ettik. Tabi bu sorgu bize yine bir collection döndürdü. Dolayısı ile sonucu ekrana yazdırabilmek için
foreach(var ogr in sorgu) Console.WriteLine(ogr.Ad);
Şöyle kısacık bir foreach‘e ihtiyac duyabiliriz 🙂
Buna herkes kendisine göre cevap vermelidir. Performans açısından herhangi birinin ötekinden daha üstün olduğu söylenemez. SQL Sorgusu yazmaktan hoşlanan ve ona kendisini daha yakın hisseden yazılımcılar genelde LINQ Syntax kullanmaktadırlar. Ancak Extension Methods tekniği lambda expressionla sorgu yazmayı seven yazılımcılar için çekici gelmektedir.
Ancak, şöyle bir gerçek vardır ki, o da LINQ Syntax, Extension Methods’un alt kümesidir. İlerleyen yazılarımızda göreceğimiz üzere, extension methodlarla yazdığımız bazı şeyleri, LINQ Syntax ile neredeyse yazılamadığını göreceksiniz. O yüzden benim tavsiyem, kendinizi Extension Methods’a alıştırmanız , çünkü orada çok daha fazla esnekliğe sahip olacaksınız. 🙂
01. Et ve Et Ürünlerinde Boya Maddeleri Aranması 01.01. Organik Boya Aranması …
"Islahat hareketlerinin babası ve 19.yüzyıl Osmanlı siyaset adamlarının fikir ustası" (1) olarak tanınan Hariciye Nazırı…
DUSUNCE AKIMLARI Ortaya atilan her yeni "dusunce akimi"nin yandaslari, ileri surdukleri goruslerin bir "yeni dunya…
01. Yöntemin Prensibi Domateslerde 4-CPA kalıntı analizi yönteminin temel prensibi örneğe uygulanan…
01. Meyve Sularında Etanol Tayini 01.01. Yöntemin Prensibi Örnekten damıtılarak ayrılan etanolün,…