UPDATE:
J'ai dû affecter la liste de retour Linq à la variable 'columnData':
if(sortOrder == 1)
{
columnData.OrderBy(s => s);
}
else
{
columnData.OrderByDescending(s => s);
}
J'ai des problèmes avec OrderByDescending pour trier une liste de chaînes simple. Si j'utilise .Sort () puis .Reverse (), cela fonctionne correctement puisque j'ai lu que .Sort () se trie naturellement mais la pratique consistant à utiliser .Reverse () pour l'ordre décroissant est une mauvaise pratique dans le code de production. Donc je le fais comme ceci:
columnData = columnData.OrderBy(s => s).ToList();
Mais ce que j'obtiens après une montée ou une descente est ceci:
Mais si j'utilise Sort () et Reverse (), ça trie correctement.
Quel est le problème avec le tri Linq?
3 Réponses :
if (sortOrder == 1)
{
columnData = columnData.OrderBy(s => s);//.ToList();
}
else
{
columnData = columnData.OrderByDescending(s => s);//.ToList();
}
OrderBy ne modifie pas la valeur de la liste. Il renvoie une nouvelle collection ordonnée, ce que vous devez faire est:
if(sortOrder == 1)
{
columnData = columnData.OrderBy(s => s).ToList();
}
else
{
columnData = columnData.OrderByDescending(s => s).ToList();
}
Vous n'utilisez pas la valeur renvoyée de OrderBy () ou OrderByDescending () .
Comme indiqué dans LINQ documentation , les méthodes retournent un System.Linq.IOrderedEnumerable.
quel type d'objet columnData est?
@Disappointed a mis à jour mes questions. C'est une liste de chaînes.