Linq

LINQ Syntax ile Projection

Projection dediğimiz şey, bir şekilde attığımız sorgudan gelen dataların tamamına ihtiyacımız yoksa, ve bunları derli toplu bir obje olarak almak istiyorsak, anonymous object tekniği kullanarak gelen datayı yeni bir objeye (project) edip alabiliriz.

var sorgu = from ogr in list
            where ogr.Ad.Contains("e"&& ogr.Ad.Contains("m")
            orderby ogr.Id descending
            select ogr;

Bu örnekte görüldüğü üzere “select” yaptığımızda “ogr” isimli nesneyi olduğu gibi seçmiş oluyoruz. Farzedin ki ogr nin içerisinde 10 tane Property var ve ben bunlardan sadece 2 tanesini istiyorum. SQL’deki gibi düşündüğümüzde, select’ten sonra ogr.Ad,ogr.Id desek ne güzel olurdu değil mi ? 🙂 Ancak bunu LINQ anlayamıyor. select dedikten sonra ya bir nesne yada bir Property seçmemiz gerekiyor.

var sorgu = from ogr in list
            where ogr.Ad.Contains("e"&& ogr.Ad.Contains("m")
            orderby ogr.Id descending
            select ogr.Ad,ogr.Id;

Bu kullanım YANLIŞTIR, malesef HATA verecektir. Derleme bile yapmayacaktır.

O yüzden böyle bir ihtiyaçta imdadımıza Anonymous Object initializer yardımımıza koşuyor.

O da şöyle

var sorgu = from ogr in list
            where ogr.Ad.Contains("e"&& ogr.Ad.Contains("m")
            orderby ogr.Id descending
            select new { HerhangiBirPropertyIsmi = ogr.Id, BaskabirPropertyIsmi = ogr.Ad };

new { dedikten sonra, hayali olarak, bir nesne örnekliyoruz, ogr içinden seçtiğimiz her bir datayı, herhangi ismini kendimizin belirleyeceği bir property’ye set ederek, hayali isimsiz bir obje oluşturabiliyor ve geriye onu veya onları içeren bir sonuç döndürebiliyoruz. Bu sonuç içerisinde “var” veri tipi ile gayet rahat iterate edebiliyoruz.

Emre ÖZÇELİKEL

C#, .NET 7, MVC ve MAUI konularında öğrenmeye ve öğretmeye meraklı bir yazılım geliştiricidir. Kendi firması üzerinden, Türkiye'nin önde gelen firmalarına yazılım destek hizmetleri vermekle beraber, eğitim kurumlarında bu konularda yüz yüze eğitimler de vermektedir.

Recent Posts

Galata Kulesi

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.…

11 saat ago

Demir

Demir elementinin özellikleri Arı halde gümüşsü beyaz renkli bir metal olan demir (Fe), dünyada ki…

23 saat ago

Canlılarda Üreme ve Çoğalma

Üreme:Canlıların soylarının devamı için kendilerine benzer yavrular meydana getirmelerine denir.Eşeyli ve eşeysiz olarak iki şekilde…

1 gün ago

Ataol Behramoğlu

13 Nisan 1942'de İstanbul Çatalca'da doğdu. İlköğrenimini Kars ve Çankırı'da yaptı. 1966'de Ankara Üniversitesi Dil…

2 gün ago

O’na Hacker Denmez !

İnternet dünyasında maalesef gerek basında çıkan haberler olsun gerekse okuduğumuz makaleler olsun bize hep hackerlar…

2 gün ago

Replay Attacks [Yeniden Gönderme Saldırıları ]

Replay kelimesinin türkçeye tam olarak nasıl çevrildiğinden emin olamadığım için, başlığı yazarken  kendimce en manalı…

3 gün ago