Cara Menggunakan LINQ untuk Mengambil Nilai Properti yang Distinct dari Daftar dalam Memori

Bekerja dengan koleksi di C# adalah tugas yang umum, terutama ketika berurusan dengan berbagai properti objek. Salah satu kebutuhan yang sering muncul adalah mengekstrak nilai-nilai unik dari sebuah daftar dengan efisien. Dalam pos ini, kami akan membahas pertanyaan umum yang dihadapi banyak pengembang: Bagaimana cara mendapatkan array dari nilai properti yang distinct dari sebuah daftar dalam memori menggunakan LINQ?

Memahami Masalah

Bayangkan Anda memiliki sebuah daftar objek dari kelas bernama Foo. Setiap objek Foo memiliki properti string yang disebut Bar, dan Anda ingin mengumpulkan semua nilai unik dari Bar tersebut dari daftar ini. Tantangannya adalah mencapainya tanpa kompleksitas yang berlebihan dan dengan cara yang efisien serta dapat dipelihara.

Skenario

  1. Anda memiliki List<Foo>.
  2. Setiap objek Foo memiliki properti Bar bertipe string.
  3. Anda ingin mendapatkan string[] yang hanya berisi nilai-nilai distinct dari properti Bar dari semua instance Foo.

Solusi

Untuk secara efektif mengekstrak nilai distinct dari Bar dari sebuah daftar objek Foo, Anda dapat memanfaatkan kekuatan LINQ. Berikut adalah cara melakukannya:

Menggunakan LINQ untuk Mengekstrak Nilai Distinct

Ini adalah cara yang sederhana dan elegan untuk mencapai tujuan Anda menggunakan LINQ:

var bars = Foos.Select(f => f.Bar).Distinct().ToArray();

Memecah Kode

  1. Foos.Select(f => f.Bar): Bagian kode ini adalah ekspresi lambda yang memproyeksikan setiap objek Foo ke dalam properti Bar-nya.
  2. .Distinct(): Panggilan metode ini memfilter hasil untuk mengembalikan hanya nilai-nilai unik, secara efektif menghilangkan duplikat dari pemilihan.
  3. .ToArray(): Akhirnya, ToArray() mengubah hasil IEnumerable menjadi array string.

Pertimbangan Penting

  • Eksekusi Tertunda: Kuery LINQ tidak dieksekusi sampai Anda mengkonsumsi hasilnya secara eksplisit. Dengan menggunakan metode seperti ToArray() atau Count(), Anda memicu evaluasi kuery tersebut.
  • Optimisasi: Disarankan untuk membangun kueri Anda sepenuhnya sebelum memaksakan evaluasi dengan ToArray(), karena LINQ dapat menerapkan optimisasi selama proses eksekusi.

Kesimpulan

Menggunakan LINQ tidak hanya menyederhanakan proses mengekstrak nilai properti yang distinct tetapi juga memastikan bahwa kode Anda bersih dan dapat dipelihara. Dengan menyusun kueri Anda dengan baik, Anda dapat secara efektif memanfaatkan kemampuan LINQ untuk mengoptimalkan kinerja.

Sekarang, lain kali Anda perlu mengekstrak nilai distinct dari sebuah daftar di C#, Anda dapat menerapkan pendekatan sederhana ini dengan percaya diri!