Many time we need to use sorting with our objects of custom classes.
Here I have given an example of how to sort an Person class on the basis of its attribute by implementing IComparable interface.
using System;
//Add refrence to Collections namespace
using System.Collections;
class Inventory : IComparable
{
string name;
double cost;
int onhand;
public Inventory(string n, double c, int h)
{
name = n;
cost = c;
onhand = h;
}
//Overriding the ToString() method to show the output formatted
public override string ToString()
{
return
String.Format("{0,-10}Cost: {1,6:C} On hand: {2}", name, cost, onhand);
}
// Implement the IComparable interface.
public int CompareTo(object obj)
{
Inventory b;
b = (Inventory)obj;
return name.CompareTo(b.name);
}
}
public class IComparableDemo
{
public static void Main()
{
ArrayList inv = new ArrayList();
// Add elements to the list
inv.Add(new Inventory("Pliers", 5.95, 3));
inv.Add(new Inventory("Wrenches", 8.29, 2));
inv.Add(new Inventory("Hammers", 3.50, 4));
inv.Add(new Inventory("Drills", 19.88, 8));
Console.WriteLine("Inventory list before sorting:");
foreach (Inventory i in inv)
{
Console.WriteLine(" " + i);
}
Console.WriteLine();
// Sort the list.
inv.Sort();
Console.WriteLine("Inventory list after sorting:");
foreach (Inventory i in inv)
{
Console.WriteLine(" " + i);
}
}
}
Happy coding.
Cheers.