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. 🙂
Boşaltım sistemi vücutta homeostazın sağlanmasında çok önemli bir yere sahiptir.Böbrekler, üreterler ve mesaneden oluşan boşaltım…
Büyük Atatürk'ün ölümünü takip eden günlerde, o zamanlar yalnız Avrupa'nın değil, dünyanın en güçlü günlük…
Mustafa Kemal Atatürk 1881 yılında Selânik'te Kocakasım Mahallesi, Islâhhâne Caddesi'ndeki üç katlı pembe evde doğdu.…
Eğer bir insanın başına 'elektroensephalograf' (ezberlemeniz gerekmez!) adını taşıyan bir cihaz bağlarsanız, o insanın yaydığı…
Stres bağışıklık sisteminin ve genel direncin zayıflamasına neden olur. Duygusal dengeyi dengeleyen faktör ise sizin…