1

例外: 配列内の 2 つの要素を比較できませんでした。

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() を使用して「名前」を比較し、キーに引っかからないようにするにはどうすればよいでしょうか?

4

5 に答える 5

11

を指定して、アイテムの並べ替え方法Comparison<T>を指示しListます。

nameList.Sort(delegate(ListItem thisItem, ListItem otherItem) {
    return thisItem.Text.CompareTo(otherItem.Text);
});

nullこの場合のように、存在しないことがすでにわかっている場合を除き、完全であることを確認することもできます。

于 2008-10-29T19:02:00.737 に答える
3

nameList=nameList.OrderBy(li => li.Text).ToList();

于 2008-10-29T19:13:15.707 に答える
1

「名前」とはどのような種類のオブジェクトですか?

編集:私が言えることから、これを機能させるには IComparer を指定する必要がありますが、あなたが何をしようとしているのかを完全に理解しているかどうかはわかりません。

編集:これは、私があなたの意図を「感じる」には複雑すぎます。基本的に、ソートされた著者名のリストをドロップダウンリストに入力したいと考えています。

あなたは持つことができるはずです

List<string> auhtorNames;
authorNames.Sort();
ddl.DataSource = authorNames;
ddl.DataBind();
于 2008-10-29T18:55:31.687 に答える
0

ArrayList.Sort() の代わりに ArrayList.Sort(IComparer) を使用します。

于 2008-10-29T18:59:40.413 に答える
0

ListItem は比較可能ではありません。代わりに System.Collections.Specialized.OrderedDictionary を使用できます。

于 2008-10-29T18:59:52.487 に答える