Example #1
0
        public int CompareOrder(RecordRow row, List <OrderByArgument> orderBy)
        {
            int result = 0;

            foreach (OrderByArgument oba in orderBy)
            {
                switch (_columns[oba.AttributeName].DataType)
                {
                case ColumnDataType.Bool:
                    result = ((bool)this.GetColumnValue(oba.AttributeName)).CompareTo(((bool)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.Byte:
                    result = ((byte)this.GetColumnValue(oba.AttributeName)).CompareTo(((byte)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.Char:
                    result = ((char)this.GetColumnValue(oba.AttributeName)).CompareTo(((char)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.DateTime:
                    result = ((DateTime)this.GetColumnValue(oba.AttributeName)).CompareTo(((DateTime)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.Decimal:
                    result = ((decimal)this.GetColumnValue(oba.AttributeName)).CompareTo(((decimal)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.Double:
                    result = ((double)this.GetColumnValue(oba.AttributeName)).CompareTo(((double)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.Float:
                    result = ((float)this.GetColumnValue(oba.AttributeName)).CompareTo(((float)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.Int16:
                    result = ((Int16)this.GetColumnValue(oba.AttributeName)).CompareTo(((Int16)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.Int32:
                    result = ((Int32)this.GetColumnValue(oba.AttributeName)).CompareTo(((Int32)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.Int64:
                    result = ((Int64)this.GetColumnValue(oba.AttributeName)).CompareTo(((Int64)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.SByte:
                    result = ((sbyte)this.GetColumnValue(oba.AttributeName)).CompareTo(((sbyte)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.String:
                    result = ((string)this.GetColumnValue(oba.AttributeName)).CompareTo(((string)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.UInt16:
                    result = ((UInt16)this.GetColumnValue(oba.AttributeName)).CompareTo(((UInt16)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.UInt32:
                    result = ((UInt32)this.GetColumnValue(oba.AttributeName)).CompareTo(((UInt32)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.UInt64:
                    result = ((UInt64)this.GetColumnValue(oba.AttributeName)).CompareTo(((UInt64)row.GetColumnValue(oba.AttributeName)));
                    break;

                case ColumnDataType.CompressedValueEntry:
                case ColumnDataType.Object:
                    break;
                }

                if (result != 0)
                {
                    if (oba.Order == Order.DESC)
                    {
                        result = -result;
                    }
                    break;
                }
            }
            return(result);
        }