public int Compare(object x, object y)
{
int compareResult;
// Cast the objects to be compared to ListViewItem objects
var listviewX = (ListViewItem)x;
var listviewY = (ListViewItem)y;
if (this.ColumnToSort == 0)
{
compareResult = this.FirstObjectCompare.Compare(x, y);
}
else
{
// Compare the two items
compareResult = this.ObjectCompare.Compare(listviewX.SubItems[this.ColumnToSort].Text,
listviewY.SubItems[this.ColumnToSort].Text);
}
// Calculate correct return value based on object comparison
switch (this.OrderOfSort)
{
case SortOrder.Ascending:
return compareResult;
case SortOrder.Descending:
return (-compareResult);
default:
return 0;
}
}