Maison >développement back-end >C++ >Comment trier une liste en fonction de l'ordre des identifiants dans une autre liste à l'aide de LINQ ?

Comment trier une liste en fonction de l'ordre des identifiants dans une autre liste à l'aide de LINQ ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-19 12:12:11265parcourir

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

Tri d'une liste en fonction des identifiants d'une autre liste à l'aide de LINQ

Dans de nombreux scénarios de programmation, vous pouvez vous retrouver avec deux listes : une contenant des identifiants et une autre contenant des éléments associés avec ces identifiants. Le défi se pose lorsque vous devez conserver le même ordre des éléments dans les deux listes. Cet article fournit une solution simple et efficace utilisant LINQ pour résoudre ce problème.

Supposons que vous ayez une liste d'identifiants :

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

Vous disposez également d'une liste d'éléments représentés par les identifiants dans docIds :

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

Votre objectif est de réorganiser la liste des documents par ordre croissant en fonction des identifiants correspondants dans docIds. L'ordre des éléments dans les deux listes doit être identique.

L'expression LINQ suivante résout ce problème :

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

Explication :

  1. OrderBy(d => ; docIds.IndexOf(d.Id)) : Cette expression lambda spécifie le critère de tri. Il récupère l'index de l'ID de l'élément dans la liste docIds, triant efficacement la liste des documents en fonction de la position de ses ID dans docIds.
  2. ToList() : ceci convertit le résultat trié en une nouvelle liste, en préservant le ordre trié.

Cette méthode réorganise efficacement la liste des documents en fonction des identifiants dans docIds, garantissant que les éléments des deux listes sont dans le même ordre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn