/// <summary> /// This method is inherited from the IComparer interface. /// It compares the two objects passed\ /// using a case insensitive comparison. /// </summary> /// <param name="x">First object to be compared</param> /// <param name="y">Second object to be compared</param> /// <returns> /// The result of the comparison. "0" if equal, /// negative if 'x' is less than 'y' and positive /// if 'x' is greater than 'y' /// </returns> 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 (SortColumn == 0) { compareResult = FirstObjectCompare.Compare(x, y); } else { compareResult = ObjectCompare.Compare(listviewX?.SubItems[SortColumn].Text, listviewY?.SubItems[SortColumn].Text); } switch (Order) { // Calculate correct return value based on object comparison case SortOrder.Ascending: return(compareResult); case SortOrder.Descending: return(-compareResult); default: // Return '0' to indicate they are equal return(0); } }
} /// <summary> /// This method is inherited from the IComparer interface. /// It compares the two objects passed\ /// using a case insensitive comparison. /// </summary> /// <param name="x">First object to be compared</param> /// <param name="y">Second object to be compared</param> /// <returns>The result of the comparison. "0" if equal, /// negative if 'x' is less than 'y' and positive /// if 'x' is greater than 'y'</returns> public int Compare(object x, object y) { int compareResult; ListViewItem listviewX, listviewY; // Cast the objects to be compared to ListViewItem objects listviewX = (ListViewItem)x; listviewY = (ListViewItem)y; if (ColumnToSort == 0) { compareResult = FirstObjectCompare.Compare(x, y); } else { // Compare the two items compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text); } // Calculate correct return value based on object comparison if (OrderOfSort == SortOrder.Ascending) { // Ascending sort is selected, // return normal result of compare operation return(compareResult); } else if (OrderOfSort == SortOrder.Descending) { // Descending sort is selected, // return negative result of compare operation return(-compareResult); } else { // Return '0' to indicate they are equal return(0); } }