Example #1
0
        private static bool TryParseDateTime(string value, WhereQueryEngineOptions options, out DateTime result)
        {
            if (DateTime.TryParseExact(value, "yyyy-MM-ddTHH:mm:ss.fffK", CultureInfo.InvariantCulture, DateTimeStyles.None, out result) ||
                DateTime.TryParseExact(value, "yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out result) ||
                DateTime.TryParseExact(value, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out result) ||
                DateTime.TryParseExact(value, "yyyy-MM-ddTHH:mm:ssK", CultureInfo.InvariantCulture, DateTimeStyles.None, out result) ||
                DateTime.TryParseExact(value, "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out result))
            {
                if (options.UseUtcDateTime)
                {
                    result = result.ToUniversalTime();
                }

                return(true);
            }

            return(false);
        }
Example #2
0
 public WhereQueryEngine(WhereQueryEngineOptions options)
 {
     _options = options;
 }
Example #3
0
        private static ConstantExpression GetConstantDateTime(string value, Type dataType, CompareOperator compareOperator, WhereQueryEngineOptions options)
        {
            if (value.IsNullOrEmpty() || compareOperator == CompareOperator.None)
            {
                return(null);
            }

            if (compareOperator == CompareOperator.ContainedIn)
            {
                var values = new List <DateTime>();
                foreach (var item in value.Split('|'))
                {
                    if (TryParseDateTime(item, options, out var valueItemDateTime))
                    {
                        values.Add(valueItemDateTime);
                    }
                }

                return(Expression.Constant(values, values.GetType()));
            }

            if (!TryParseDateTime(value, options, out var valueDateTime))
            {
                return(null);
            }

            return(Expression.Constant(valueDateTime, dataType));
        }
Example #4
0
        private static ConstantExpression GetConstantEnum(string value, Type dataType, CompareOperator compareOperator, WhereQueryEngineOptions options)
        {
            if (value.IsNullOrEmpty() || compareOperator == CompareOperator.None)
            {
                return(null);
            }

            if (compareOperator == CompareOperator.ContainedIn)
            {
                var values = value.Split('|').Select(v => Enum.Parse(dataType, v)).ToList();
                try
                {
                    return(Expression.Constant(values, values.GetType()));
                }
                catch
                {
                    return(null);
                }
            }

            try
            {
                return(Expression.Constant(Enum.Parse(dataType, value), dataType));
            }
            catch
            {
                return(null);
            }
        }
Example #5
0
        private static ConstantExpression GetConstantLong(string value, Type dataType, CompareOperator compareOperator, WhereQueryEngineOptions options)
        {
            if (value.IsNullOrEmpty() || compareOperator == CompareOperator.None)
            {
                return(null);
            }

            if (compareOperator == CompareOperator.ContainedIn)
            {
                var values = new List <long>();
                foreach (var item in value.Split('|'))
                {
                    if (Int64.TryParse(item, NumberStyles.Integer, CultureInfo.InvariantCulture, out var valueItemLong))
                    {
                        values.Add(valueItemLong);
                    }
                }

                return(Expression.Constant(values, values.GetType()));
            }

            if (!Int64.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var valueLong))
            {
                return(null);
            }

            return(Expression.Constant(valueLong, dataType));
        }
Example #6
0
        private static ConstantExpression GetConstantBoolean(string value, Type dataType, CompareOperator compareOperator, WhereQueryEngineOptions options)
        {
            if (value.IsNullOrEmpty() || compareOperator == CompareOperator.None)
            {
                return(null);
            }

            var boolean = value.ToBoolean();

            return(Expression.Constant(boolean, dataType));
        }
Example #7
0
        private static ConstantExpression GetConstantString(string value, Type dataType, CompareOperator compareOperator, WhereQueryEngineOptions options)
        {
            if (value.IsNullOrEmpty() || compareOperator == CompareOperator.None)
            {
                return(null);
            }

            if (compareOperator == CompareOperator.ContainedIn)
            {
                var values = value.Split('|').ToList();

                return(Expression.Constant(values, values.GetType()));
            }

            return(Expression.Constant(value, dataType));
        }