首頁 >後端開發 >C++ >如何使用 LINQ 根據另一個清單中標識符的順序對清單進行排序?

如何使用 LINQ 根據另一個清單中標識符的順序對清單進行排序?

Patricia Arquette
Patricia Arquette原創
2025-01-19 12:12:11285瀏覽

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

使用LINQ 根據另一個清單中的識別碼對清單進行排序

在許多程式設計場景中,您可能會發現自己有兩個清單:一個包含標識符,另一個包含關聯的項目與這些標識符。當您需要在兩個清單中保持相同的項目順序時,就會出現挑戰。本文提供了一個使用 LINQ 來解決此問題的簡單而有效的解決方案。

假設您有一個識別符清單:

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

您還有一個由ID 表示的項目清單docIds:

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

您的目標是根據中對應的識別符會依升序重新排列文檔清單文檔ID。兩個列表中的項目順序應該相同。

以下LINQ 表達式可以解決此問題:

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

說明:

  1. OrderBy(d => ; docIds.IndexOf(d.Id)) :此lambda 表達式指定排序標準。它會檢索 docIds 清單中項目 ID 的索引,根據 docIds 中 ID 的位置對文件清單進行有效排序。
  2. ToList():這會將排序結果轉換為新列表,保留排序順序。

此方法根據 docIds 中的識別碼有效地對文件清單進行重新排序,確保兩個清單的順序相同。

以上是如何使用 LINQ 根據另一個清單中標識符的順序對清單進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn