mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 16:18:47 +08:00
Update exp to sql
This commit is contained in:
parent
a82a211088
commit
ae11d38ab0
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user