Bellek İçi Listelerden Farklı Property Değerlerini Almak için LINQ
Nasıl Kullanılır
C#‘da koleksiyonlarla çalışmak, özellikle nesnelerin farklı özellikleriyle ilgilenirken yaygın bir görevdir. Sıkça karşılaşılan bir gereksinim, bir listeden benzersiz değerleri verimli bir şekilde çıkarmaktır. Bu yazıda, birçok geliştiricinin karşılaştığı ortak bir soruyu ele alacağız: LINQ
kullanarak bir bellek içi listeden farklı property değerlerinden oluşan bir dizi nasıl elde edebilirim?
Sorunun Anlaşılması
Diyelim ki Foo
adında bir sınıfın nesnelerinden oluşan bir listeniz var. Her Foo
nesnesinin Bar
adında bir string özelliği bulunmaktadır ve bu listeden Bar
‘ın tüm benzersiz değerlerini toplamak istiyorsunuz. Zorluk, bunu aşırı karmaşıklığa girmeden, verimli ve sürdürülebilir bir şekilde başarmaktır.
Senaryo
- Bir
List<Foo>
nesneniz var. - Her
Foo
nesnesininstring
türündeBar
adında bir özelliği var. - Tüm
Foo
örneklerininBar
özelliklerinden yalnızca farklı değerleri içeren birstring[]
almak istiyorsunuz.
Çözüm
Foo
nesnelerinden Bar
‘ın benzersiz değerlerini etkili bir şekilde çıkarmak için LINQ
‘in gücünden yararlanabilirsiniz. İşte bunu nasıl yapacağınız:
Farklı Değerleri Çıkarmak için LINQ Kullanma
LINQ kullanarak amacınıza ulaşmanın basit ve şık bir yolu aşağıdadır:
var bars = Foos.Select(f => f.Bar).Distinct().ToArray();
Kodun Açıklanması
Foos.Select(f => f.Bar)
: Bu kod parçası, herFoo
nesnesiniBar
özelliğine projekte eden bir lambda ifadesidir..Distinct()
: Bu yöntem çağrısı, sonucu filtreleyerek yalnızca benzersiz değerleri döndürür ve seçimden tekrarlananları etkili bir şekilde ortadan kaldırır..ToArray()
: Son olarak,ToArray()
, IEnumerable sonucunu string dizisine dönüştürür.
Önemli Hususlar
- Ertelemeli İcra: LINQ sorguları, sonuçlarını açıkça tüketene kadar gerçekleştirilmez.
ToArray()
veyaCount()
gibi yöntemleri kullanarak sorgunun değerlendirilmesini tetikleyebilirsiniz. - Optimizasyonlar:
ToArray()
ile değerlendirmeyi zorlamadan önce sorgularınızı tamamen oluşturmanız önerilir, çünkü LINQ, yürütme sürecinde optimizasyonlar uygulayabilir.
Sonuç
LINQ kullanmak, benzersiz property değerlerini çıkarmak sürecini yalnızca basitleştirmekle kalmaz, aynı zamanda kodunuzun temiz ve sürdürülebilir olmasını sağlar. Sorgularınızı doğru bir şekilde yapılandırarak, performansı optimize etmek için LINQ’in yeteneklerinden etkili bir şekilde yararlanabilirsiniz.
Artık C#’da bir listeden benzersiz değerleri çıkarmanız gerektiğinde, bu basit yaklaşımı güvenle uygulayabilirsiniz!