Maison >développement back-end >C++ >Comment trier une liste d'objets en fonction des identifiants d'une liste distincte ?

Comment trier une liste d'objets en fonction des identifiants d'une liste distincte ?

DDD
DDDoriginal
2025-01-19 12:16:091029parcourir

How to Sort a List of Objects Based on IDs from a Separate List?

Trier une liste d'objets en fonction d'un identifiant dans une autre liste

Dans certains cas, vous devrez peut-être trier une liste d'objets en fonction de leurs identifiants stockés dans une liste distincte. Considérez ce qui suit :

Vous avez un docIds nommé List<long> avec les valeurs suivantes : { 6, 1, 4, 7, 2 }. De plus, vous disposez d'un docs nommé List<T> qui stocke l'objet représenté par l'ID dans le docIds.

Votre objectif est de maintenir la cohérence dans l’ordre des éléments dans les deux listes. Cela signifie que l'objet dans List<T> doit occuper la même position que son ID correspondant dans List<long>, par exemple, l'objet avec l'ID 1 dans docs doit être à l'index 1.

Pour réaliser ce tri sans modifier List<T> vous pouvez utiliser LINQ comme suit :

<code class="language-csharp">docs = docs.OrderBy(d => docIds.IndexOf(d.Id)).ToList();</code>

Cette expression LINQ utilise d'abord IndexOf pour déterminer l'index de chaque ID d'objet dans docIds. Il utilise ensuite cet index comme clé de tri, alignant efficacement les objets dans List<T> avec leurs identifiants dans List<long>.

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