کلاس مورد نظر باید اینترفیس IComparable رو پیاده سازی کند. (این اینترفیس تنها یک متود CompareTo دارد)
به نحوه ی پیاده سازی متود CompareTo دقت کنید :
public class Person : IComparable
{
private string _firstname;
public string Firstname
{
get { return _firstname; }
set { _firstname = value; }
}
private string _lastname;
public string Lastname
{
get { return _lastname; }
set { _lastname = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public Person(string firstname, string lastname, int age)
{
_firstname = firstname;
_lastname = lastname;
_age = age;
}
public int CompareTo(object obj)
{
if (obj is Person)
{
Person p2 = (Person)obj;
return _firstname.CompareTo(p2.Firstname);
}
else
throw new ArgumentException("Object is not a Person.");
}
public override string ToString()
{
return String.Format("{0} {1}, Age = {2}", _firstname,
_lastname, _age.ToString());
}
}
مثال - Sort کردن افراد از روی اسم کوچک (استفاده از کلاس بالا) :
List<Person> persons = new List<Person>();
persons.Add(new Person("Behrouz", "Rad", 30));
persons.Add(new Person("Omid", "Mottaghi Rad", 31));
persons.Add(new Person("Mehdi", "Keramati", 32));
persons.Add(new Person("Ali", "Keshavarz", 33));
persons.Add(new Person("Mohammad", "Heshemian", 34));
persons.Add(new Person("Farhad", "XXX", 35));
//Before Sorting
listBox1.Items.AddRange(persons.ToArray());
//ُSorting List
persons.Sort();
//Sorted List
listBox2.Items.AddRange(persons.ToArray());
منبع : http://codebetter.com/blogs/david.ha...ges/56094.aspx