Exemplo n.º 1
0
        public static Criterion From(MemberExpression expression)
        {
            if (expression.NodeType != ExpressionType.MemberAccess)
            {
                return(null);
            }

            if (expression.GetPropertiesInPath().LastOrDefault()?.Name == "HasValue" &&
                expression.Expression is MemberExpression memberExpression)
            {
                var nullableProperty = memberExpression.GetDatabaseColumnPath();
                return(new Criterion(nullableProperty, FilterFunction.IsNot, value: null));
            }

            var property = expression.GetDatabaseColumnPath();

            if (property.IsEmpty())
            {
                return(null);
            }

            if ((expression.Member as PropertyInfo).PropertyType != typeof(bool))
            {
                return(null);
            }

            // Only one property level is supported:
            return(new Criterion(property, FilterFunction.Is, true));
        }
Exemplo n.º 2
0
        public static Criterion From(MemberExpression expression)
        {
            if (expression.NodeType != ExpressionType.MemberAccess)
            {
                return(null);
            }

            var property = expression.GetDatabaseColumnPath();

            if (property.IsEmpty())
            {
                return(null);
            }

            if (property.EndsWith(".HasValue"))
            {
                property = ((MemberExpression)expression.Expression).GetDatabaseColumnPath();
                return(new Criterion(property, FilterFunction.IsNot, value: null));
            }

            if ((expression.Member as PropertyInfo).PropertyType != typeof(bool))
            {
                return(null);
            }

            // Only one property level is supported:
            return(new Criterion(property, FilterFunction.Is, true));
        }