Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Isih Senarai Berdasarkan Susunan ID dalam Senarai Lain Menggunakan LINQ?

Bagaimanakah Saya Boleh Isih Senarai Berdasarkan Susunan ID dalam Senarai Lain Menggunakan LINQ?

Susan Sarandon
Susan Sarandonasal
2025-01-19 11:57:10783semak imbas

How Can I Sort a List Based on the Order of IDs in Another List Using LINQ?

Isih Senarai Berdasarkan ID daripada Senarai Lain Menggunakan LINQ

Dalam pembangunan perisian, selalunya perlu bekerja dengan berbilang senarai yang mempunyai elemen yang sepadan. Dalam kes ini, pengguna mempunyai dua senarai: satu mengandungi satu siri pengecam (docIds) dan satu lagi mengandungi item T yang sepadan (docs). Cabarannya ialah untuk mengisih senarai dokumen dalam susunan yang sama seperti senarai docId, sambil mengekalkan jenis asal senarai dokumen (List).

Untuk mencapai ini menggunakan LINQ (Language Integrated Query), seseorang boleh menggunakan kaedah sambungan OrderBy. Kaedah ini mengambil ungkapan lambda yang menentukan cara elemen dalam koleksi harus dipesan. Dalam kes khusus ini, ungkapan lambda perlu mengakses sifat Id setiap item dalam senarai dokumen untuk membandingkannya dengan pengecam yang sepadan dalam senarai docId.

Ekspresi LINQ berikut menyelesaikan tugas ini:

docs = docs.OrderBy(d => docIds.IndexOf(d.Id)).ToList();

Ungkapan ini akan berulang ke atas senarai dokumen, untuk setiap item, ia akan memanggil kaedah IndexOf pada senarai docId untuk menentukan kedudukan pengecam yang sepadan. Hasilnya ialah tertib enumerable, yang kemudiannya diberikan kepada senarai dokumen. Dengan menggunakan kaedah ToList, enumerable yang dipesan ditukar kembali kepada List.

Ringkasnya, ungkapan LINQ ini menyediakan cara yang mudah dan cekap untuk menyusun semula senarai item berdasarkan pengecam daripada senarai lain, membenarkan pengekalan kedua-dua susunan dan jenis senarai asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Senarai Berdasarkan Susunan ID dalam Senarai Lain Menggunakan LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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