Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengisih Senarai Berdasarkan Susunan Pengecam dalam Senarai Lain Menggunakan LINQ?

Bagaimana Mengisih Senarai Berdasarkan Susunan Pengecam dalam Senarai Lain Menggunakan LINQ?

Patricia Arquette
Patricia Arquetteasal
2025-01-19 12:12:11241semak imbas

How to Sort a List Based on the Order of Identifiers in Another List Using LINQ?

Isih Senarai Berdasarkan Pengecam daripada Senarai Lain Menggunakan LINQ

Dalam banyak senario pengaturcaraan, anda mungkin mendapati diri anda mempunyai dua senarai: satu mengandungi pengecam dan satu lagi mengandungi item yang berkaitan dengan pengecam tersebut. Cabaran timbul apabila anda perlu mengekalkan susunan item yang sama dalam kedua-dua senarai. Artikel ini menyediakan penyelesaian yang mudah dan cekap menggunakan LINQ untuk menangani masalah ini.

Andaikan anda mempunyai senarai pengecam:

List<long> docIds = new List<long>() { 6, 1, 4, 7, 2 };

Anda juga mempunyai senarai item yang diwakili oleh ID dalam docIds:

List<T> docs = GetDocsFromDb(...);

Matlamat anda adalah untuk menyusun semula senarai dokumen dalam tertib menaik berdasarkan yang sepadan pengecam dalam docId. Susunan item dalam kedua-dua senarai hendaklah sama.

Ekspresi LINQ berikut menyelesaikan masalah ini:

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

Penjelasan:

  1. OrderBy(d => ; docIds.IndexOf(d.Id)): Ungkapan lambda ini menentukan kriteria pengisihan. Ia mendapatkan semula indeks ID item dalam senarai docId, mengisih senarai dokumen dengan berkesan berdasarkan kedudukan IDnya dalam docId.
  2. ToList(): Ini menukarkan hasil yang diisih kepada senarai baharu, mengekalkan tertib diisih.

Kaedah ini menyusun semula senarai dokumen dengan cekap berdasarkan pengecam dalam docId, memastikan item dalam kedua-dua senarai berada dalam susunan yang sama.

Atas ialah kandungan terperinci Bagaimana Mengisih Senarai Berdasarkan Susunan Pengecam 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