在C#中对对象的ArrayList进行排序

时间:2012-01-30 13:30:10

标签: c# arraylist sorting icomparable

如何对ArrayList个对象进行排序?我在排序IComparable时实现了ArrayList界面,但我没有得到所需的结果。

我的代码示例:

public class Sort : IComparable
{
    public string Count { get; set; }
    public string Url { get; set; }
    public string Title { get; set; }

    public int CompareTo(object obj)
    {
        Sort objCompare = (Sort)obj;
        return (this.Count.CompareTo(objCompare.Count));
    }
}

我希望根据ArrayListCount进行排序。

3 个答案:

答案 0 :(得分:3)

试试这个:

public class Sort : IComparable<Sort>
{
    public string Count { get; set; }
    public string Url { get; set; }
    public string Title { get; set; }

    public virtual int CompareTo(Sort obj)
    {
        return (Count.CompareTo(obj.Count));
    }
}

因为Count是字符串,它可能不会按照你期望的方式排序....

答案 1 :(得分:1)

或者您可以使用LINQ构造来获取列表的排序版本,如下所示:

var results = myArrayList.OrderBy(x => x.Count).ToList();

你有没有理由不使用LINQ?

答案 2 :(得分:0)

根据MSDN documentation

  

要执行稳定排序,您必须实现自定义IComparer   用于此方法的其他重载的接口。