SqlSugar.ResolveExpress.CreateSqlElements C# (CSharp) Method

CreateSqlElements() private method

递归解析表达式路由计算
private CreateSqlElements ( Expression exp, MemberType &type, bool isTure, bool isComparisonOperator = null ) : string
exp System.Linq.Expressions.Expression
type MemberType
isTure bool
isComparisonOperator bool
return string
        private string CreateSqlElements(Expression exp, ref MemberType type, bool isTure, bool? isComparisonOperator=null)
        {
            //主入口
            if (exp is LambdaExpression)
            {
                return LambdaExpression(exp);
            }
            else if (exp is BinaryExpression)
            {
                return BinaryExpression(exp);
            }
            else if (exp is BlockExpression)
            {
                throw new SqlSugarException(ExpBlockExpression + exp.ToString());
            }
            else if (exp is ConditionalExpression)
            {
                throw new SqlSugarException(ExpConditionalExpression + exp.ToString());
            }
            else if (exp is MethodCallExpression)
            {
                return MethodCallExpression(exp, ref type, isTure);
            }
            else if (exp is ConstantExpression)
            {
                return ConstantExpression(exp, ref type,isComparisonOperator);
            }
            else if (exp is MemberExpression)
            {
                return MemberExpression(ref exp, ref type,isComparisonOperator);
            }
            else if (exp is UnaryExpression)
            {
                return UnaryExpression(exp, ref type);
            }
            else if (exp != null && exp.NodeType.IsIn(ExpressionType.New, ExpressionType.NewArrayBounds, ExpressionType.NewArrayInit))
            {
                throw new SqlSugarException(ExpNew+ exp.ToString());
            }
            return null;
        }

Usage Example

Exemplo n.º 1
0
        public void ResolveExpression(ResolveExpress re, Expression exp)
        {
            ResolveExpress.MemberType type = ResolveExpress.MemberType.None;
            var expStr    = exp.ToString();
            var isNotBool = !expStr.Contains("True") && !expStr.Contains("False");

            if (isNotBool)
            {
                this.SqlWhere = string.Format(" AND {0} ", re.CreateSqlElements(exp, ref type));
            }
            else
            {
                var isTrue  = Regex.IsMatch(expStr, @"\=\> True$");
                var isFalse = Regex.IsMatch(expStr, @"\=\> False$");
                if (isFalse)
                {
                    this.SqlWhere = string.Format(" AND 1<>1 ");
                }
                else if (isTrue)
                {
                }
                else
                {
                    this.SqlWhere = string.Format(" AND {0} ", re.CreateSqlElements(exp, ref type));
                }
            }
        }
All Usage Examples Of SqlSugar.ResolveExpress::CreateSqlElements