Linq Ordre par un nombre déterminé d'abord, puis afficher tout reste dans l'ordre
Si j'ai une liste de nombres:
1,2,3,4,5,6,7,8
et je veux commander par un numéro spécifique et de montrer ensuite le reste.
Par exemple si je sélectionne '3" la liste doit être:
3,1,2,4,5,6,7,8
À la recherche de linq et c#.
Merci
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser une comparaison dans
OrderBy
ouThenBy
pour effectuer un conditionnel de tri.- Je utiliser
OrderByDescending
parce que je veux des résultats correspondant à la première(true
est "plus haut" quefalse
).OrderByDescending
àOrderBy
oui == 3
ài != 3
myDataList.OrderByDescending(i => i.StringColumnValue[0] == filterStringValue[0]).ToList()
. j'ai utilisé votre logique ici. Basé sur le filtre de départ de la lettre, ces résultats sont affichés dans l'ordre, avec la même lettre de départPeut-être quelque chose comme ceci:
Un couple de réponses déjà trier les derniers numéros (ce qui est peut-être exacte puisque vous êtes seulement en montrant déjà une liste triée). Si vous souhaitez que le "non sélectionné" les numéros seront affichés dans leur original, pas nécessairement de l'ordre de tri au lieu de tri, vous pouvez à la place faire;
Comme @DuaneTheriot souligne, IEnumerable de la méthode d'extension OrderBy fait un tri stable et ne change pas l'ordre des éléments qui ont une égalité de clé. En d'autres termes;
fonctionne tout aussi bien pour trier les 3 premiers et conserver l'ordre de tous les autres éléments.
list.OrderBy(i => i != 3)
.