mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
Update exp to sql
This commit is contained in:
@@ -127,7 +127,7 @@ namespace SqlSugar
|
||||
if (RightIsHasValue(leftExpression, rightExpression,ExpressionTool.IsLogicOperator(expression)))
|
||||
{
|
||||
Expression trueValue = Expression.Constant(true);
|
||||
rightExpression = ExpressionBuilderHelper.CreateExpression(rightExpression, trueValue, ExpressionType.And);
|
||||
rightExpression = ExpressionBuilderHelper.CreateExpression(rightExpression, trueValue, ExpressionType.Equal);
|
||||
}
|
||||
var leftIsBinary = leftExpression is BinaryExpression;
|
||||
var rightBinary = rightExpression is BinaryExpression;
|
||||
|
@@ -20,7 +20,7 @@ namespace SqlSugar
|
||||
if (IsBoolMember(express))
|
||||
{
|
||||
Expression trueValue = Expression.Constant(true);
|
||||
args[0]= ExpressionBuilderHelper.CreateExpression(express.Test, trueValue, ExpressionType.And);
|
||||
args[0]= ExpressionBuilderHelper.CreateExpression(express.Test, trueValue, ExpressionType.Equal);
|
||||
}
|
||||
var isLeft = parameter.IsLeft;
|
||||
MethodCallExpressionModel model = new MethodCallExpressionModel();
|
||||
|
@@ -222,11 +222,11 @@ namespace SqlSugar
|
||||
if (name == "IIF" && item == args.First() && item is MemberExpression)
|
||||
{
|
||||
Expression trueValue = Expression.Constant(true);
|
||||
var newItem = ExpressionBuilderHelper.CreateExpression(item, trueValue, ExpressionType.And);
|
||||
var newItem = ExpressionBuilderHelper.CreateExpression(item, trueValue, ExpressionType.Equal);
|
||||
var member = (item as MemberExpression);
|
||||
if (member.Member.Name == "HasValue")
|
||||
{
|
||||
newItem = ExpressionBuilderHelper.CreateExpression(member.Expression, Expression.Constant(null), ExpressionType.And);
|
||||
newItem = ExpressionBuilderHelper.CreateExpression(member.Expression, Expression.Constant(null), ExpressionType.Equal);
|
||||
}
|
||||
AppendItem(parameter, name, new List<Expression>() { newItem}, model, newItem);
|
||||
}
|
||||
|
@@ -780,7 +780,7 @@ namespace SqlSugar
|
||||
|
||||
private bool IsContainsArray(MethodCallExpression express, string methodName, bool isValidNativeMethod)
|
||||
{
|
||||
return !isValidNativeMethod && express.Method.DeclaringType.Namespace.IsIn("System.Linq", "System.Collections.Generic") && methodName == "Contains";
|
||||
return !isValidNativeMethod && express.Method.DeclaringType.Namespace.IsIn("System.Collections", "System.Linq", "System.Collections.Generic") && methodName == "Contains";
|
||||
}
|
||||
private bool IsSubMethod(MethodCallExpression express, string methodName)
|
||||
{
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
@@ -49,6 +50,18 @@ namespace SqlSugar
|
||||
return Expression.Equal(left, Expression.Convert(value, left.Type));
|
||||
}
|
||||
}
|
||||
public static Expression CreateExpressionLike<ColumnType>(Type entityType,string propertyName,List<ColumnType> list)
|
||||
{
|
||||
var parameter = Expression.Parameter(entityType, "p");
|
||||
MemberExpression memberProperty = Expression.PropertyOrField(parameter, propertyName);
|
||||
MethodInfo method = typeof(List<>).MakeGenericType(typeof(ColumnType)).GetMethod("Contains");
|
||||
ConstantExpression constantCollection = Expression.Constant(list);
|
||||
|
||||
MethodCallExpression methodCall = Expression.Call(constantCollection, method, memberProperty);
|
||||
|
||||
var expression = Expression.Lambda(methodCall, parameter);
|
||||
return expression;
|
||||
}
|
||||
public static Expression<Func<T, object>> CreateNewFields<T>(EntityInfo entity,List<string> propertyNames)
|
||||
{
|
||||
Type sourceType = typeof(T);
|
||||
|
Reference in New Issue
Block a user