Memanfaatkan .Kecuali() untuk Membandingkan Senarai Objek Tersuai dalam C#
Selalunya dalam pembangunan C#, kami menghadapi senario yang memerlukan perbandingan dan manipulasi senarai. Tugas biasa ialah mengenal pasti elemen unik yang terdapat dalam satu senarai tetapi tiada dalam senarai yang lain. Kaedah .Except()
rangka kerja .NET menyediakan penyelesaian yang elegan untuk ini.
Menyesuaikan Perbandingan Kesaksamaan dengan .Except()
Apabila bekerja dengan objek tersuai, menentukan kesamaan adalah penting. Jika kelas CustomObject
anda sudah mengatasi Equals()
dan GetHashCode()
, atau jika kesamaan rujukan sudah memadai, .Except()
boleh digunakan terus:
var list3 = list1.Except(list2).ToList();
Walau bagaimanapun, untuk definisi kesaksamaan yang lebih bernuansa (mis., membandingkan berdasarkan sifat ID), melaksanakan IEqualityComparer<T>
adalah perlu:
public class IdComparer : IEqualityComparer<CustomObject> { // Implement GetHashCode and Equals methods based on ID property... }
Kemudian, gunakan pembanding tersuai dengan .Except()
:
var list3 = list1.Except(list2, new IdComparer()).ToList();
Mengatasi Penyertaan Pendua
.Except()
sememangnya mengalih keluar unsur pendua. Untuk mengekalkan pendua dalam senarai yang terhasil, pertimbangkan untuk menukar senarai kedua kepada HashSet
dan menggunakan pendekatan penapisan:
var set2 = list2.ToHashSet(); var list3 = list1.Where(x => !set2.Contains(x)).ToList();
Ringkasan
Kaedah .Except()
menawarkan cara yang mudah dan cekap untuk mencari perbezaan yang ditetapkan antara dua senarai yang mengandungi objek tersuai. Dengan melaksanakan perbandingan kesaksamaan tersuai atau mengendalikan pendua mengikut keperluan, anda boleh menyesuaikan kaedah ini kepada keperluan perbandingan yang pelbagai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan .Except() untuk Mencari Perbezaan Antara Senarai Objek Tersuai dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!