Ejemplo n.º 1
0
        /// <summary>
        /// </summary>
        /// <returns>s 0 if equal, -1 if this object is less than the parameter, +1 if it is greater
        /// </returns>
        public System.Int16 CompareTo(TVariant v)
        {
            System.Int16 ReturnValue;
            ReturnValue = 0;

            if ((TypeVariant == eVariantTypes.eDecimal) || (TypeVariant == eVariantTypes.eInteger) || (TypeVariant == eVariantTypes.eInt64)
                || (TypeVariant == eVariantTypes.eCurrency))
            {
                if (ToDecimal() == v.ToDecimal())
                {
                    ReturnValue = 0;
                }
                else if (ToDecimal() < v.ToDecimal())
                {
                    ReturnValue = -1;
                }
                else
                {
                    ReturnValue = +1;
                }
            }
            else if (TypeVariant == eVariantTypes.eDateTime)
            {
                ReturnValue = (short)System.DateTime.Compare(ToDate(), v.ToDate());
            }
            else if (TypeVariant == eVariantTypes.eString)
            {
                // test if perhaps boolean values are compared; trouble is, yes and no and true and false are used
                if (ComparingBooleanValues(v))
                {
                    if (ToBool() == v.ToBool())
                    {
                        ReturnValue = 0;
                    }
                    else if (ToBool() == false)
                    {
                        ReturnValue = -1;
                    }
                    else
                    {
                        ReturnValue = 1;
                    }
                }
                else
                {
                    ReturnValue = (short)String.Compare(ToString(), v.ToString());
                }
            }
            else if (TypeVariant == eVariantTypes.eBoolean)
            {
                if (ToBool() == v.ToBool())
                {
                    ReturnValue = 0;
                }
                else if (ToBool() == false)
                {
                    ReturnValue = -1;
                }
                else
                {
                    ReturnValue = 1;
                }
            }
            else if (TypeVariant == eVariantTypes.eComposite)
            {
                // just compare the first elements
                ReturnValue = FirstCompositeValue().CompareTo(v.FirstCompositeValue());
            }

            return ReturnValue;
        }