Sortieren ListBox numerisch in C#
Ich versuche zu Sortieren eines listbox-voller zahlen numerisch. Warum tut diese Arbeit?
{
ArrayList Sorting = new ArrayList();
Sorting.Add (lbNumbers.Text);
int[] items = new int[Sorting.Count];
Sorting.CopyTo(items);
Array.Sort(items);
lbNumbers.Items.Add(items);
}
lbNumbers.Text
ist vermutlich einestring
. Sie können nichtstring
gebenint[]
.- ist die Sortierreihenfolge wie diese: 1, 10, 100, 11, 2, 21, 23, 233 ....
- Vielleicht.. Sortieren.Add (lbNumbers.Text);
- Es ist sehr schwer zu Lesen dein code. Speichern Sie die Zeichenfolgen in eine nicht generische ArrayList, dann kopiere diese in ein neues array von ints... Dieser code ist eine Hölle von einem Durcheinander.
- versuchen Sie zum konvertieren der strings Hinzugefügt: Sortieren.Add(Int32.Parse(lbNumbers.Text));
- Stark typisierte
List<T>
stattArrayLists
.
InformationsquelleAutor Simon Roberts | 2012-10-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
HINZUGEFÜGT: Für Sortieren in absteigender Reihenfolge,
1.Erstellen Sie eine Klasse ReverseSort wie unten gezeigt:
2.Ersetzen Sie die code-Zeile der Art mit dieser Zeile:
Wahrscheinlich, weil, wenn Ihre zahlen werden dargestellt als Zeichenfolgen, werden Sie nicht wie die Art und Weise, die Sie erwarten. Sie Sortieren als strings und nicht als zahlen.
Zum Beispiel, wenn Sie hatte eine Liste wie:
Wäre es sortiert, wie:
Erste, analysiert die string-Elemente sind, dann Sortieren.
Die Sie Sortieren lbNumbers.Text => Saiten
Müssen Sie
clear
vor der SortierungMit ein wenig LINQ
Die Analyse und Bestellungen können in derselben Anweisung, aber waren gespalten, hier Lesen zu erleichtern.
Versuchen Sie dieses Beispiel:
Was Sie wo zu tun versucht war, Lesen Sie nur den markierten text. Auf diese Weise können Sie alle Elemente in der listbox, um eine arraylist zu Sortieren und Sie dann, indem Sie Sie wieder zurück in die listbox.
Beachten Sie, dass alle unsortierten items sind immer noch da, also müssen Sie deaktivieren Sie das listbox-ersten. Das ist, was die
listBox1.Items.Clear();
hat