前提・実現したいこと
windows form applicationの
listBox1のデータを昇順並び替えしたいです。
1|サンプル1
3|サンプル3
2|サンプル2
簡単に書くとこんな感じのデータ(文字型)を
区切り文字「|」の前部分の値をキーにして
昇順に並び替えてlistbox1に戻したいです。
1|サンプル1
2|サンプル2
3|サンプル3
該当のソースコード
//リスト宣言 List<string> lt = new List<string>(); //昇順でリストに追加 for (int i = 0; i < listBox1.Items.Count; i++) { int n_num = int.Parse(listBox1.Items[i].ToString().Split('|')[0]); if (lt.Count == 0) { lt.Add(listBox1.Items[i].ToString()); } else { for (int q = lt.Count; q >0; q--) { int o_num = int.Parse(lt[q - 1].ToString().Split('|')[0]); if (n_num > o_num) { lt.Insert(q, listBox1.Items[i].ToString()); break; } else { if (q == 1) { lt.Insert(0, listBox1.Items[i].ToString()); } } } } } //リストボックスに戻す listBox1.Items.Clear(); listBox1.Items.AddRange(lt.ToArray());
試したこと
一応動作はするのですが、
もっと良い方法を知りたいと思い
質問させていただきました。
よろしくお願いいたします。