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
- Anda memiliki
List<Foo>
. - Setiap objek
Foo
memiliki propertiBar
bertipestring
. - Anda ingin mendapatkan
string[]
yang hanya berisi nilai-nilai distinct dari propertiBar
dari semua instanceFoo
.
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
Foos.Select(f => f.Bar)
: Bagian kode ini adalah ekspresi lambda yang memproyeksikan setiap objekFoo
ke dalam propertiBar
-nya..Distinct()
: Panggilan metode ini memfilter hasil untuk mengembalikan hanya nilai-nilai unik, secara efektif menghilangkan duplikat dari pemilihan..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()
atauCount()
, 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!