异常:无法比较数组中的两个元素。
private void assignNames(DropDownList ddl, Hashtable names)
{
List<ListItem> nameList = new List<ListItem>();
if (ddl != null)
{
ddl.ClearSelection();
ddl.Items.Add(new ListItem("Select Author"));
foreach (string key in names.Keys)
{
nameList.Add(new ListItem(names[key].ToString(), key));
}
nameList.Sort();
}
那么如何使用Sort()来比较“名称”而不是卡在键上?
答案 0 :(得分:11)
提供Comparison<T>
来指示List
如何对项目进行排序。
nameList.Sort(delegate(ListItem thisItem, ListItem otherItem) {
return thisItem.Text.CompareTo(otherItem.Text);
});
您可能还想检查null
是否完整,除非您已经知道不会有任何内容,例如在这种情况下。
答案 1 :(得分:3)
nameList = nameList.OrderBy(li =&gt; li.Text).ToList();
答案 2 :(得分:1)
什么类型的对象是“名字”?
编辑: 据我所知,你必须指定一个IComparer来实现这一点,不确定我是否完全理解你想要做的事情。
编辑: 这对于我“感觉”你的意图来说太复杂了,你基本上想要用一个排序的作者名列表填充一个下拉列表。
你应该能够拥有
List<string> auhtorNames;
authorNames.Sort();
ddl.DataSource = authorNames;
ddl.DataBind();
答案 3 :(得分:0)
使用ArrayList.Sort(IComparer)代替ArrayList.Sort()。
答案 4 :(得分:0)
ListItem不可比较。你可以改用System.Collections.Specialized.OrderedDictionary。