Update exp to sql

This commit is contained in:
skx 2021-01-26 16:30:18 +08:00
parent a82a211088
commit ae11d38ab0
2 changed files with 22 additions and 4 deletions

View File

@ -87,6 +87,9 @@ namespace OrmTest
.Where(it=>2>it.id).Select(it=> new Order() { .Where(it=>2>it.id).Select(it=> new Order() {
Id=SqlFunc.IIF(2>it.id,1,2) Id=SqlFunc.IIF(2>it.id,1,2)
}).ToList(); }).ToList();
var qu4 = Db.Queryable<Order>().OrderBy(it=>it.Id+it.Id).ToList();
} }
} }
} }

View File

@ -8,6 +8,21 @@ namespace SqlSugar
public class BinaryExpressionResolve : BaseResolve public class BinaryExpressionResolve : BaseResolve
{ {
public BinaryExpressionResolve(ExpressionParameter parameter) : base(parameter) public BinaryExpressionResolve(ExpressionParameter parameter) : base(parameter)
{
switch (parameter.Context.ResolveType)
{
case ResolveExpressType.FieldSingle:
case ResolveExpressType.FieldMultiple:
var sql = base.GetNewExpressionValue(this.Expression);
this.Context.Result.Append(sql);
break;
default:
Other(parameter);
break;
}
}
private void Other(ExpressionParameter parameter)
{ {
var expression = this.Expression as BinaryExpression; var expression = this.Expression as BinaryExpression;
var operatorValue = parameter.OperatorValue = ExpressionTool.GetOperator(expression.NodeType); var operatorValue = parameter.OperatorValue = ExpressionTool.GetOperator(expression.NodeType);
@ -32,15 +47,15 @@ namespace SqlSugar
{ {
base.Context.Result.Replace(ExpressionConst.FormatSymbol, ExpressionConst.LeftParenthesis + ExpressionConst.FormatSymbol); base.Context.Result.Replace(ExpressionConst.FormatSymbol, ExpressionConst.LeftParenthesis + ExpressionConst.FormatSymbol);
} }
if (leftExpression is UnaryExpression && (leftExpression as UnaryExpression).Operand is UnaryExpression&& (leftExpression as UnaryExpression).NodeType == ExpressionType.Convert) if (leftExpression is UnaryExpression && (leftExpression as UnaryExpression).Operand is UnaryExpression && (leftExpression as UnaryExpression).NodeType == ExpressionType.Convert)
{ {
leftExpression = (leftExpression as UnaryExpression).Operand; leftExpression = (leftExpression as UnaryExpression).Operand;
} }
if (leftExpression is UnaryExpression && (leftExpression as UnaryExpression).Operand.Type == UtilConstants.BoolType && (leftExpression as UnaryExpression).NodeType == ExpressionType.Convert&&rightExpression.Type==UtilConstants.BoolTypeNull) if (leftExpression is UnaryExpression && (leftExpression as UnaryExpression).Operand.Type == UtilConstants.BoolType && (leftExpression as UnaryExpression).NodeType == ExpressionType.Convert && rightExpression.Type == UtilConstants.BoolTypeNull)
{ {
leftExpression = (leftExpression as UnaryExpression).Operand; leftExpression = (leftExpression as UnaryExpression).Operand;
} }
if (rightExpression is UnaryExpression&& (rightExpression as UnaryExpression).Operand.Type==UtilConstants.BoolType&& (rightExpression as UnaryExpression).NodeType == ExpressionType.Convert) if (rightExpression is UnaryExpression && (rightExpression as UnaryExpression).Operand.Type == UtilConstants.BoolType && (rightExpression as UnaryExpression).NodeType == ExpressionType.Convert)
{ {
rightExpression = (rightExpression as UnaryExpression).Operand; rightExpression = (rightExpression as UnaryExpression).Operand;
} }
@ -49,7 +64,7 @@ namespace SqlSugar
base.Expression = leftExpression; base.Expression = leftExpression;
base.IsLeft = true; base.IsLeft = true;
base.Start(); base.Start();
if (leftExpression is UnaryExpression && leftExpression.Type == UtilConstants.BoolType&&!this.Context.Result.Contains(ExpressionConst.ExpressionReplace)) if (leftExpression is UnaryExpression && leftExpression.Type == UtilConstants.BoolType && !this.Context.Result.Contains(ExpressionConst.ExpressionReplace))
{ {
this.Context.Result.AppendFormat(" {0} ", ExpressionTool.GetOperator(expression.NodeType)); this.Context.Result.AppendFormat(" {0} ", ExpressionTool.GetOperator(expression.NodeType));
} }