Nanook.QueenBee.ListViewColumnSorter.Compare C# (CSharp) Method

Compare() public method

This method is inherited from the IComparer interface. It compares the two objects passed using a case insensitive comparison.
public Compare ( object x, object y ) : int
x object First object to be compared
y object Second object to be compared
return int
        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;

            // Compare the two items
            long l1;
            long l2;
            bool b1;
            bool b2;
            if (_numeric)
            {
                b1 = long.TryParse(listviewX.SubItems[_columnToSort].Text, out l1);
                b2 = long.TryParse(listviewY.SubItems[_columnToSort].Text, out l2);
                compareResult = (int)(l1 - l2);
            }
            else
                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;
            }
        }