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
Mary-Kate Olsenasal
2025-01-23 00:59:10467semak imbas

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:

<code class="language-csharp">var list3 = list1.Except(list2).ToList();</code>

Walau bagaimanapun, untuk definisi kesaksamaan yang lebih bernuansa (mis., membandingkan berdasarkan sifat ID), melaksanakan IEqualityComparer<T> adalah perlu:

<code class="language-csharp">public class IdComparer : IEqualityComparer<CustomObject>
{
    // Implement GetHashCode and Equals methods based on ID property...
}</code>

Kemudian, gunakan pembanding tersuai dengan .Except():

<code class="language-csharp">var list3 = list1.Except(list2, new IdComparer()).ToList();</code>

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:

<code class="language-csharp">var set2 = list2.ToHashSet();
var list3 = list1.Where(x => !set2.Contains(x)).ToList();</code>

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:
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