Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengisih Senarai Objek Berdasarkan ID daripada Senarai Berasingan?
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:
<code class="language-csharp">docs = docs.OrderBy(d => docIds.IndexOf(d.Id)).ToList();</code>
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!