Ejemplo n.º 1
0
 public TableSorter(IFieldProperties field, ResultOptionMode mode)
 {
     this.field = field ?? throw new ArgumentNullException(nameof(field));
     comparer   = field.DataType switch
     {
         DataType.Bool => Comparer <bool> .Default,
         DataType.Int8 => Comparer <sbyte> .Default,
         DataType.Int16 => Comparer <short> .Default,
         DataType.Int32 => Comparer <int> .Default,
         DataType.Int64 => Comparer <long> .Default,
         DataType.UInt8 => Comparer <byte> .Default,
         DataType.UInt16 => Comparer <ushort> .Default,
         DataType.UInt32 => Comparer <uint> .Default,
         DataType.UInt64 => Comparer <ulong> .Default,
         DataType.Char => Comparer <char> .Default,
         DataType.DateTime => Comparer <DateTime> .Default,
         DataType.Decimal => Comparer <decimal> .Default,
         DataType.Double => Comparer <double> .Default,
         DataType.Enum => System.Collections.Comparer.Default,
         DataType.Single => Comparer <float> .Default,
         DataType.String => Comparer <string> .Default,
         DataType.TimeSpan => Comparer <TimeSpan> .Default,
         DataType.User => Comparer <string> .Default,
         _ => throw new NotSupportedException(),
     };
     descending = mode switch
     {
         ResultOptionMode.SortAsc => false,
         ResultOptionMode.SortDesc => true,
         _ => throw new ArgumentOutOfRangeException(nameof(mode)),
     };
 }
Ejemplo n.º 2
0
 ResultOption(ResultOptionMode mode, string parameter)
 {
     Mode      = mode;
     Parameter = parameter;
 }
Ejemplo n.º 3
0
        public TableSorter(IFieldProperties field, ResultOptionMode mode)
        {
            this.field = field ?? throw new ArgumentNullException(nameof(field));
            switch (field.DataType)
            {
            default:
            case DataType.Binary: throw new NotSupportedException();

            case DataType.Bool:
                comparer = Comparer <bool> .Default;
                break;

            case DataType.Int8:
                comparer = Comparer <sbyte> .Default;
                break;

            case DataType.Int16:
                comparer = Comparer <short> .Default;
                break;

            case DataType.Int32:
                comparer = Comparer <int> .Default;
                break;

            case DataType.Int64:
                comparer = Comparer <long> .Default;
                break;

            case DataType.UInt8:
                comparer = Comparer <byte> .Default;
                break;

            case DataType.UInt16:
                comparer = Comparer <ushort> .Default;
                break;

            case DataType.UInt32:
                comparer = Comparer <uint> .Default;
                break;

            case DataType.UInt64:
                comparer = Comparer <ulong> .Default;
                break;

            case DataType.Char:
                comparer = Comparer <char> .Default;
                break;

            case DataType.DateTime:
                comparer = Comparer <DateTime> .Default;
                break;

            case DataType.Decimal:
                comparer = Comparer <decimal> .Default;
                break;

            case DataType.Double:
                comparer = Comparer <double> .Default;
                break;

            case DataType.Enum:
                comparer = Comparer.Default;
                break;

            case DataType.Single:
                comparer = Comparer <float> .Default;
                break;

            case DataType.String:
                comparer = Comparer <string> .Default;
                break;

            case DataType.TimeSpan:
                comparer = Comparer <TimeSpan> .Default;
                break;

            case DataType.User:
                comparer = Comparer <string> .Default;
                break;
            }

            switch (mode)
            {
            case ResultOptionMode.SortAsc:
                descending = false;
                break;

            case ResultOptionMode.SortDesc:
                descending = true;
                break;

            default: throw new ArgumentOutOfRangeException(nameof(mode));
            }
        }