You can also make a "smart" comparer....
This method (below) allows you to use 1 Comparer per object, instead of many
comparers for 1 object.
This assumes you already have an Employee (class), with .Age and .Name
properties.
using System;
using System.Collections;
namespace MyCompany.MyApplication.Comparers
{
internal sealed class EmployeeComparer : IComparer
{
private EmployeeSortColumns m_sortValue = EmployeeSortColumns.None ;
public enum EmployeeSortColumns
{
None = 0 , Age = 1 , Name = 2
}
public EmployeeComparer(EmployeeSortColumns sortValue)
{
m_sortValue = sortValue;
}
public int Compare(object x,object y)
{
switch(m_sortValue)
{
case EmployeeSortColumns.None :
return 0;
case EmployeeSortColumns.Name :
return ((Employee)x).Name .CompareTo(((Employee )y).Name );
//break;
case EmployeeSortColumns.Age :
return ((Employee)x).Age.CompareTo(((Employee )y).Age );
default:
return ((Employee)x).Name .CompareTo(((Employee )y).Name );
// break;
}
}
}
}