Buat Senarai daripada Dua Senarai Objek dengan Linq
Pertimbangkan senario berikut:
class Person { string Name; int Value; int Change; } List<Person> list1; List<Person> list2;
Objektifnya ialah untuk menggabungkan dua senarai ke dalam Senarai
Penyelesaian:
Kesatuan kaedah Linq amat sesuai untuk tugasan ini:
var mergedList = list1.Union(list2).ToList();
Ini operasi menggabungkan dua senarai, mengalih keluar pendua. Secara lalai, ia akan menggunakan kaedah Equals dan GetHashCode yang ditakrifkan dalam kelas Person. Walau bagaimanapun, jika kaedah ini tidak ditindih, kaedah tersebut mungkin tidak membandingkan objek tersuai kami dengan berkesan (cth., menggunakan sifat Name sebagai perbandingan).
Overriding Equals dan GetHashCode:
Untuk memastikan perbandingan yang tepat mengikut nama, ganti kaedah sebagai berikut:
public override bool Equals(object obj) { var person = obj as Person; return Equals(person); } public override int GetHashCode() { return Name.GetHashCode(); } public bool Equals(Person personToCompareTo) { if (personToCompareTo == null || string.IsNullOrEmpty(personToCompareTo.Name)) return false; return Name.Equals(personToCompareTo.Name); }
Pembanding Tersuai:
Sebagai alternatif, buat pembanding tersuai yang melaksanakan antara muka IEqualityComparer. Pembanding ini boleh disediakan sebagai hujah kedua kepada kaedah Kesatuan. Maklumat lanjut tentang pembanding tersuai boleh didapati di sini: http://msdn.microsoft.com/en-us/library/system.collections.iequalitycomparer.aspx.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Dua Senarai Objek Orang Menggunakan LINQ dan Mengendalikan Kemas Kini Atribut Berdasarkan Padanan Nama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!