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

时间:2014-08-28 14:52:54

标签: c# sorting listbox listboxitems

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

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

2 个答案:

答案 0 :(得分:2)

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

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()); }
}

答案 1 :(得分:1)

我打算建议一个linq排序,然后我想,你在3s中添加数字......只需反向操作并从你想要结束并向后工作的地方开始。

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();