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

  1. Bir List<Foo> nesneniz var.
  2. Her Foo nesnesinin string türünde Bar adında bir özelliği var.
  3. Tüm Foo örneklerinin Bar özelliklerinden yalnızca farklı değerleri içeren bir string[] 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ı

  1. Foos.Select(f => f.Bar): Bu kod parçası, her Foo nesnesini Bar özelliğine projekte eden bir lambda ifadesidir.
  2. .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.
  3. .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() veya Count() 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!