Optimization expression

This commit is contained in:
sunkaixuan
2022-06-15 22:12:34 +08:00
parent 7e7f445a6f
commit 851908483d
2 changed files with 26 additions and 0 deletions

View File

@@ -17,6 +17,11 @@ namespace SqlSugar
express.IfTrue,
express.IfFalse
};
if (IsBoolMember(express))
{
Expression trueValue = Expression.Constant(true);
args[0]= ExpressionBuilderHelper.CreateExpression(express.Test, trueValue, ExpressionType.And);
}
var isLeft = parameter.IsLeft;
MethodCallExpressionModel model = new MethodCallExpressionModel();
model.Args = new List<MethodCallExpressionArgs>();
@@ -40,5 +45,10 @@ namespace SqlSugar
break;
}
}
private static bool IsBoolMember(ConditionalExpression express)
{
return express.Test is MemberExpression && (express.Test as MemberExpression).Expression is ParameterExpression;
}
}
}

View File

@@ -12,6 +12,22 @@ namespace SqlSugar
{
public class ExpressionBuilderHelper
{
/// <summary>
/// Create Expression
/// </summary>
public static Expression CreateExpression(Expression left, Expression value, ExpressionType type)
{
if (type == ExpressionType.Equal)
{
return Expression.Equal(left, Expression.Convert(value, left.Type));
}
else
{
//Not implemented, later used in writing
return Expression.Equal(left, Expression.Convert(value, left.Type));
}
}
public static Expression<Func<T, object>> CreateNewFields<T>(EntityInfo entity,List<string> propertyNames)
{
Type sourceType = typeof(T);