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!