如何对列表框中的项目进行排序

本文关键字:项目 排序 列表 | 更新日期: 2023-09-27 18:19:56

我是编程新手,我想从列表框中排序项目中获得一些帮助我有一个循环代码,它在listbox1上添加项目。我想要的是将项目按降序排序到另一个listbox中。例如,列表框1的输出为3,6,9,直到39,排序后的降序列表将转到列表框2。

int thingsforlist;
do{
     listbox.item.add(thingsforlist); 
     thingsforlist = thingforlist+3;
  }
while (thingsforlist<=39);

如何对列表框中的项目进行排序

使用此函数,您可以按降序或升序对列表框中的项目进行排序。

Private Sub sortListBoxItems(ByRef lb As ListBox, ByVal ascending As Boolean)
    Dim items As List(Of Object)
    items = lb.Items.OfType(Of Object)().ToList()
    lb.Items.Clear()
    If ascending Then
        lb.Items.AddRange(items.OrderBy(Function(i) i).ToArray())
    Else
        lb.Items.AddRange(items.OrderByDescending(Function(i) i).ToArray())
    End If
End Sub

或者如果你喜欢C#,

private void sortListBoxItems(ref ListBox lb, bool ascending)
{
    List<object> items;
    items = lb.Items.OfType<object>().ToList();
    lb.Items.Clear();
    if (ascending)
    { lb.Items.AddRange(items.OrderBy(i => i).ToArray()); }
    else
    { lb.Items.AddRange(items.OrderByDescending(i => i).ToArray()); }
}

我本来打算建议linq排序,然后我就想,你在3秒内加数字。。。倒过来做,从你想结束的地方开始,倒过来做。

int thingsforlist = 39;
do
{
    listbox.item.add(thingsforlist);
    thingsforlist -= 3;
}
while (thingsforlist > 0);

如果你有某种可排序的对象,你可以使用linq和OrderByDescending,但我认为你的情况看起来不需要进入,至少根据你提供的代码片段。

编辑:如果您希望绑定一些有序数据,这里还有另一个选项:

List<int> yourItems = new List<int>();
int thingsforlist = 0;
do
{
    yourItems.Add(thingsforlist);
    thingsforlist += 3;
}
while (thingsforlist <= 39);
listbox.DataSource = yourItems.OrderByDescending(i => i);
listbox.DataBind();