using System;
using System.Collections;
namespace ArrayListSORTING
{
public enum SortDirection
{
Asc,
Desc
}
public class CategoryComparer : IComparer
{
private SortDirection m_direction = SortDirection.Asc;
public CategoryComparer() : base() { }
public CategoryComparer(SortDirection direction)
{
this.m_direction = direction;
}
int IComparer.Compare(object x, object y)
{
Category categoryX = (Category) x;
Category categoryY = (Category) y;
if (categoryX == null && categoryY == null)
{
return 0;
}
else if (categoryX == null && categoryY != null)
{
return (this.m_direction == SortDirection.Asc) ? -1 : 1;
}
else if (categoryX != null && categoryY == null)
{
return (this.m_direction == SortDirection.Asc) ? 1 : -1;
}
else
{
return (this.m_direction == SortDirection.Asc) ?
yX.TypeCode.CompareTo(categoryY.TypeCode) :
categoryY.TypeCode.CompareTo(categoryX.TypeCode);
}
}
}
}
using System;
using System.Collections;
namespace ArrayListSORTING
{
class SortArrayList
{
[STAThread]
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add(new Category("Music", 4));
list.Add(new Category("Play", 7));
list.Add(new Category("Dance", 2));
list.Add(new Category("Party", 9));
list.Add(new Category("Disco", 1));
list.Add(new Category("Sport", 3));
list.Sort(new CategoryComparer());
Console.WriteLine("Array in Ascending Order");
foreach (Category cate in list)
{
Console.WriteLine("CategoryName: " + cate.Type + ", CategoryCode: " + cate.TypeCode.ToString());
}
list.Sort(new CategoryComparer(SortDirection.Desc));
Console.WriteLine("\n\rArray in Desending Order");
foreach (Category cate in list)
{
Console.WriteLine("CategoryName: " + cate.Type + ", CategoryCode: " + cate.TypeCode.ToString());
}
Console.ReadLine();
}
}
}