Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menggunakan .Except() untuk Mencari Perbezaan Antara Senarai Objek Tersuai dalam C#?

Bagaimanakah Saya Boleh Menggunakan .Except() untuk Mencari Perbezaan Antara Senarai Objek Tersuai dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-23 00:59:10
asal
466 orang telah melayarinya

How Can I Use .Except() to Find Differences Between Lists of Custom Objects in C#?

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();
Salin selepas log masuk

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...
}
Salin selepas log masuk

Kemudian, gunakan pembanding tersuai dengan .Except():

var list3 = list1.Except(list2, new IdComparer()).ToList();
Salin selepas log masuk

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();
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan