J'essaie de trier un tableau de chiffres qui sont des chaînes de caractères et je voudrais qu'ils soient triés numériquement.
Le problème est que Je n'arrive pas à convertir les chiffres en int .
Voici le code :
string[] things= new string[] { "105", "101", "102", "103", "90" };
foreach (var thing in things.OrderBy(x => x))
{
Console.WriteLine(thing);
}
Sortie :
101, 102, 103, 105, 90
J'aimerais bien :
90, 101, 102, 103, 105
EDIT : La sortie ne peut pas être 090, 101, 102...
Mise à jour de l'exemple de code pour dire " things
" au lieu de " sizes
". Le tableau peut être quelque chose comme ceci :
string[] things= new string[] { "paul", "bob", "lauren", "007", "90" };
Cela signifie qu'il doit être trié par ordre alphabétique et par numéro :
007, 90, bob, lauren, paul
9 votes
Pourquoi ne pouvez-vous pas les convertir en int ?
2 votes
"tailles" peut être quelque chose d'autre comme "nom". L'exemple de code est juste simplifié.
4 votes
Certains des chiffres seront-ils négatifs ? Seront-ils tous des nombres entiers ? Quelle est l'étendue des nombres entiers ?
1 votes
"things" peut être n'importe quel type de chaîne. J'aimerais que la liste soit triée logiquement pour une personne qui ne connaît pas l'informatique. Les nombres négatifs doivent être placés avant les positifs. En termes de longueur de chaîne, elle ne doit pas dépasser 100 caractères.
7 votes
Jusqu'où voulez-vous aller ? Devriez vous
image10
venir aprèsimage2
? Est-ce queJanuary
venir avantFebruary
?1 votes
Pour les lignes de texte qui ne commencent que par un numéro :
var numList = tb_data.Lines.Select(x => new Tuple<int, string>(Convert.ToInt16(x.Split(new char[] { ' ', '\t', ';' })[0]), x)).OrderBy(x => x.Item1).Select(x => x.Item2).ToArray(); tb_data.Lines = numList;