Maison >développement back-end >C++ >Comment puis-je trier une liste en fonction de l'ordre des identifiants dans une autre liste à l'aide de LINQ ?
Tri d'une liste en fonction des identifiants d'une autre liste à l'aide de LINQ
Dans le développement de logiciels, il est souvent nécessaire de travailler avec plusieurs listes qui ont éléments correspondants. Dans ce cas, l'utilisateur dispose de deux listes : une contenant une série d'identifiants (docIds) et une autre contenant les T éléments correspondants (docs). Le défi est de trier la liste des documents dans le même ordre que la liste des docIds, tout en conservant le type original de la liste des documents (List
Pour y parvenir en utilisant LINQ (Language Integrated Query), on peut utiliser la méthode d'extension OrderBy. Cette méthode prend une expression lambda qui spécifie comment les éléments de la collection doivent être ordonnés. Dans ce cas précis, l'expression lambda doit accéder à la propriété Id de chaque élément de la liste docs pour la comparer avec l'identifiant correspondant dans la liste docIds.
L'expression LINQ suivante accomplit cette tâche :
docs = docs.OrderBy(d => docIds.IndexOf(d.Id)).ToList();
Cette expression parcourra la liste docs, pour chaque élément, elle appellera la méthode IndexOf sur la liste docIds pour déterminer la position de l'identifiant correspondant. Le résultat est un énumérable ordonné, qui est ensuite affecté à la liste de documents. En utilisant la méthode ToList, l'énumérable ordonné est reconverti en List
En résumé, cette expression LINQ fournit un moyen simple et efficace de réorganiser une liste d'éléments en fonction des identifiants d'une autre liste, permettant de préserver à la fois l'ordre et le type de la liste originale.
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!