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. 🙂
Galata Kulesi, dünyanın en eski kulelerinden biridir. 528 yılında Bizans İmparatoru Justinianus hükümdarlığı sırasında yapılmıştır.…
Demir elementinin özellikleri Arı halde gümüşsü beyaz renkli bir metal olan demir (Fe), dünyada ki…
Üreme:Canlıların soylarının devamı için kendilerine benzer yavrular meydana getirmelerine denir.Eşeyli ve eşeysiz olarak iki şekilde…
13 Nisan 1942'de İstanbul Çatalca'da doğdu. İlköğrenimini Kars ve Çankırı'da yaptı. 1966'de Ankara Üniversitesi Dil…
İnternet dünyasında maalesef gerek basında çıkan haberler olsun gerekse okuduğumuz makaleler olsun bize hep hackerlar…
Replay kelimesinin türkçeye tam olarak nasıl çevrildiğinden emin olamadığım için, başlığı yazarken kendimce en manalı…