[英]How To Sort An Array List
有2個用於交換項目的列表框。 每個列表項都有文本和值屬性,例如:“ Branch”,1; “ leaves”,23,... etc從listbox2添加一個項目到listbox1之后,我想對listbox1進行排序。
lb1和lb2是列表框。
protected void btnRemove_Click()
{
if(lb2.Items.count > 0)
{
if(lb2.selectedindex >=0)
{
ListItem li = lb2.selecteditem;
lb1.items.add(li);
//sort
List<ListItem> al = new List<ListItem>();
foreach(listitem l in lb1.items)
{
al.Add(l);
}
lb1.items.clear();
al.sort();
lb1.Datasource=al;
lb1.databind();
}
}
}
在al.sort();
它給出一個錯誤-“無法比較數組中的2個元素”。 我該如何糾正。
與您現有的代碼的問題是,您要添加ListItem
中ArrayList
和排序的ArrayList
應包含的對象,它實現IComparer
在陳述我怎么可以排序的ArrayList帶班?
您可以添加自定義IComparer
這樣的內容,
public class MyListItemComparer : IComparer
{
int IComparer.Compare(Object x, Object y)
{
//ListItem item1 = (ListItem)x;
//ListItem item2 = (ListItem)y;
return 1;//Your logic to compare and sort;
}
}
然后您可以將sort
方法調用為
ArrayList al = new ArrayList();
..... //Your other code
IComparer myComparer = new MyListItemComparer();
al.Sort(myComparer);
本文將為您提供幫助: C#ArrayList示例 。
試試這個排序烏爾al
陣:
al.OrderBy(a => a);
請確保您的數組列表包含正確的數據,並且不為null。 al.sort();
如果它們繼承了IComparable
,則應該在整數,字符串和其他數據類型的數組列表上工作,否則您需要編寫自己的比較器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.