我是编程的新手,我想从列表框中排序项目中获得一些帮助 我有一个循环代码,它在listbox1上添加项目我想要的是将项目按降序排序到另一个列表框中。 例如,列表框1的输出是3,6,9直到39,排序的降序列表将转到listbox2。
int thingsforlist;
do{
listbox.item.add(thingsforlist);
thingsforlist = thingforlist+3;
}
while (thingsforlist<=39);
答案 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();