mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2026-02-27 16:50:33 +08:00
Optimization expression
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user