public int AddColumnInfo(ColumnTypeInfo infoColumnType)
 {
     foreach (ColumnTypeInfo columntypeItem in _listColumInfo)
     {
         if (columntypeItem.ColumnIndex == infoColumnType.ColumnIndex)
         {
             columntypeItem.ValueType = infoColumnType.ValueType;
             return(_listColumInfo.Count);
         }
     }
     _listColumInfo.Add(infoColumnType);
     return(_listColumInfo.Count);
 }
        int IComparer.Compare(object x, object y)
        {
            int          compResult = 0;
            ListViewItem lviX, lviY;

            lviX = (ListViewItem)x;
            lviY = (ListViewItem)y;

            ColumnTypeInfo cti = GetColumnInfo(_sortColumnIndex);

            if (_sortOrder == SortOrder.Ascending)
            {
                if (cti == null)
                {
                    compResult = CompareString(lviX, lviY);
                    return(compResult);
                }
                if (cti.ValueType == ColumnType.TypeInteger)
                {
                    compResult = CompareInteger(lviX, lviY);
                    return(compResult);
                }
                else if (cti.ValueType == ColumnType.TypeStringLex)
                {
                    compResult = CompareStringLex(lviX, lviY);
                    return(compResult);
                }
                else
                {
                    compResult = CompareString(lviX, lviY);
                    return(compResult);
                }
            }
            else if (_sortOrder == SortOrder.Descending)
            {
                if (cti == null)
                {
                    compResult = CompareString(lviX, lviY);
                    return(-compResult);
                }
                if (cti.ValueType == ColumnType.TypeInteger)
                {
                    compResult = CompareInteger(lviX, lviY);
                    return(-compResult);
                }
                else if (cti.ValueType == ColumnType.TypeDateTime)
                {
                    compResult = CompareDateTime(lviX, lviY);
                    return(-compResult);
                }
                else if (cti.ValueType == ColumnType.TypeDateTime)
                {
                    compResult = CompareDateTime(lviX, lviY);
                    return(-compResult);
                }
                else
                {
                    compResult = CompareString(lviX, lviY);
                    return(-compResult);
                }
            }
            else
            {
                return(0);
            }
        }