Ich habe diese TextBoxes
markiert als tb_class#
und # = 1-10
Sorting Liste <TextBox> Numerisch C#
Bisher ist dies die Funktion I
private List<TextBox> GetCustomClasses()
{
List<TextBox> tb = new List<TextBox>();
foreach (Control con in gb_customClasses.Controls)
if (con.Name.Contains("tb_class"))
tb.Add(con as TextBox);
return tb.OrderByDescending(x => x.Name.Replace("tb_class", "")).ToList();
}
Die Ausgabe sieht wie folgt aus:
9
8
7
6
5
4
3
2
10
1
I könnte einen Scheck dafür hinzufügen, aber ich möchte, dass es in perfekter Reihenfolge läuft. Für diejenigen, die sich fragen gb_customClasses
ist ein groupbox
.
Gelöst! Schlusscode:
private List<TextBox> GetCustomClasses()
{
List<TextBox> tb = new List<TextBox>();
foreach (Control con in gb_customClasses.Controls)
if (con.Name.Contains("tb_class"))
tb.Add(con as TextBox);
return tb.OrderByDescending(x => int.Parse(x.Name.Replace("tb_class", ""))).ToList();
}
Ich glaube nicht einmal über das Hinzufügen von int.Parse
Bitte zeigen Sie die Daten vor dem Ersetzen. Anscheinend haben Sie lexikografisch auf Strings sortiert, nicht auf einem numerischen Typ. – Codor
Es ist einfach genug - Sie verarbeiten die Namen der Steuerelemente, die Strings sind. Wenn Sie alphabetisch bestellen, sind sie in Ordnung! Sie müssen sie als numerischen Typ vergleichen, damit sie in der von Ihnen gewünschten Reihenfolge angezeigt wird. – Bridge
Sie können natürliche Sortierreihenfolge für diese Art von Sache verwenden - [siehe meine Antwort hier] (http://stackoverflow.com/a/31538443/106159) und [diese Antwort hier] (http: // stackoverflow. com/a/248613/106159). –