Sort an ArrayList of Objects in C#

7k views Asked by At

How can I sort an ArrayList of objects? I have implemented the IComparable interface while sorting the ArrayList, but I am not getting the required result.

My code sample:

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));
    }
}

Here I want to sort the ArrayList based on Count.

3

There are 3 answers

0
Stig On BEST ANSWER

try this:

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));
    }
}

as Count is string, it may not sort the way you expect....

0
M.Babcock On

According to the MSDN documentation:

To perform a stable sort, you must implement a custom IComparer interface to use with the other overloads of this method.

2
Roy Dictus On

Or you can just use a LINQ construct to get a sorted version of your list, like so:

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

Is there a reason you are not using LINQ (yet)?