Сортировать ArrayList объектов в C # - PullRequest
1 голос
/ 30 января 2012

Как я могу отсортировать 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));
    }
}

Здесь я хочу отсортировать ArrayList на основе Count.

Ответы [ 3 ]

3 голосов
/ 30 января 2012

попробуйте это:

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 голос
/ 30 января 2012

Или вы можете просто использовать конструкцию LINQ для получения отсортированной версии вашего списка, например так:

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

Есть ли причина, по которой вы не используете LINQ (пока)?

0 голосов
/ 30 января 2012

Согласно документации MSDN :

Для выполнения стабильной сортировки необходимо реализовать пользовательский интерфейс IComparer для использования с другимперегрузки этого метода.

...