Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kaedah Kesatuan LINQ Boleh Menggabungkan Dua Senarai Objek dan Mengendalikan Pendua?

Bagaimanakah Kaedah Kesatuan LINQ Boleh Menggabungkan Dua Senarai Objek dan Mengendalikan Pendua?

Linda Hamilton
Lepaskan: 2025-01-04 16:42:40
asal
778 orang telah melayarinya

How Can LINQ's Union Method Combine Two Lists of Objects and Handle Duplicates?

Gabungkan Dua Senarai Objek dengan LINQ

Apabila berurusan dengan senarai objek berbilang, keperluan untuk menggabungkannya menjadi satu unit padu sering timbul . Dalam senario ini, anda mempunyai dua senarai objek Orang dan ingin menggabungkannya, mengira nilai Tukar sebagai perbezaan antara nilai masing-masing jika pendua wujud.

Untuk mencapai ini, LINQ menyediakan kaedah sambungan yang berkuasa: Union . Secara lalai, kaedah ini mengalih keluar pendua berdasarkan kaedah Equals dan GetHashCode yang ditakrifkan dalam kelas Person. Jika kelas Person anda tidak mempunyai kaedah ini ditindih atau anda ingin melakukan perbandingan tersuai, begini caranya:

Overriding Equals dan GetHashCode

Dalam Orang anda kelas, mengatasi kaedah Equals dan GetHashCode untuk membandingkan objek berdasarkan harta yang anda inginkan, seperti Nama:

public override bool Equals(object obj)
{
    // Convert object to a Person for comparison
    var person = obj as Person;

    if (person == null) return false;

    return Equals(person);
}

public override int GetHashCode()
{
    return Name.GetHashCode();
}

public bool Equals(Person personToCompareTo)
{
    if (personToCompareTo == null) return false;

    if (string.IsNullOrEmpty(personToCompareTo.Name)) return false;

    return Name.Equals(personToCompareTo.Name);
}
Salin selepas log masuk

Menggunakan Kelas Pembanding

Laksanakan kelas pembanding yang melaksanakan antara muka IEqualityComparer. Sediakan pembanding ini sebagai parameter kedua dalam kaedah sambungan Linq Union:

// Implement IEqualityComparer<Person>
public bool Equals(Person x, Person y)
{
    // Your custom comparison here
}

public int GetHashCode(Person person)
{
    // Your custom hash code generation here
}

var mergedList = list1.Union(list2, new MyPersonComparer());
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Kaedah Kesatuan LINQ Boleh Menggabungkan Dua Senarai Objek dan Mengendalikan Pendua?. 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