Isih senarai objek berdasarkan ID dalam senarai lain
Dalam sesetengah kes, anda mungkin perlu mengisih senarai objek berdasarkan ID mereka yang disimpan dalam senarai berasingan. Pertimbangkan perkara berikut:
Anda mempunyai docIds
bernama List<long>
dengan nilai berikut: { 6, 1, 4, 7, 2 }. Selain itu, anda mempunyai docs
bernama List<T>
yang menyimpan objek yang diwakili oleh ID dalam docIds
.
Matlamat anda adalah untuk mengekalkan ketekalan dalam susunan item dalam kedua-dua senarai. Ini bermakna objek dalam List<T>
mesti menduduki kedudukan yang sama dengan ID yang sepadan dalam List<long>
, contohnya, objek dengan ID 1 dalam docs
hendaklah berada pada indeks 1.
Untuk mencapai pengisihan ini tanpa mengubah suai List<T>
anda boleh menggunakan LINQ seperti berikut:
docs = docs.OrderBy(d => docIds.IndexOf(d.Id)).ToList();
Ungkapan LINQ ini mula-mula menggunakan IndexOf
untuk menentukan indeks setiap ID objek dalam docIds
. Ia kemudian menggunakan indeks ini sebagai kunci isihan, menjajarkan objek dalam List<T>
dengan ID mereka dalam List<long>
dengan berkesan.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Senarai Objek Berdasarkan ID daripada Senarai Berasingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!