Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I sort an array of custom classes?

I have a class with 2 strings and 1 double (amount).

class Donator

  • string name
  • string comment
  • double amount

Now I have a Array of Donators filled.
How I can sort by Amount?

like image 426
PassionateDeveloper Avatar asked Mar 18 '10 20:03

PassionateDeveloper


1 Answers

If you implement IComparable<Donator> You can do it like this:

public class Donator :IComparable<Donator>
{
  public string name { get; set; }
  public string comment { get; set; }
  public double amount { get; set; }

  public int CompareTo(Donator other)
  {
     return amount.CompareTo(other.amount);
  }
}

You can then call sort on whatever you want, say:

var donors = new List<Donator>();
//add donors
donors.Sort();

The .Sort() calls the CompareTo() method you implemented for sorting.

There's also the lambda alternative without IComparable<T>:

var donors = new List<Donator>();
//add donors
donors.Sort((a, b) => a.amount.CompareTo(b.amount));
like image 92
Nick Craver Avatar answered Sep 18 '22 20:09

Nick Craver