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:
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); }
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());
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!