diff --git a/OrmTest/UnitTest/ExpressionTest/Where.cs b/OrmTest/UnitTest/ExpressionTest/Where.cs index d842deadb..a2bd6ca40 100644 --- a/OrmTest/UnitTest/ExpressionTest/Where.cs +++ b/OrmTest/UnitTest/ExpressionTest/Where.cs @@ -27,8 +27,10 @@ namespace OrmTest.UnitTest whereSingle4(); whereSingle5(); whereSingle6(); + whereSingle7(new Student() { Id = 1 }); WhereMultiple1(); WhereMultiple2(); + } base.End("Where Test"); } @@ -137,6 +139,17 @@ namespace OrmTest.UnitTest new SugarParameter("@Name3","a1") }, "whereSingle6"); } + private void whereSingle7(Student st) + { + Expression> exp = it => it.Id > st.Id; + ExpressionContext expContext = new ExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "( [Id] > @Id0 )", new List() { + new SugarParameter("@Id0",1) + }, "whereSingle7"); + } } public class WhereConst diff --git a/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 01ec0f7b5..8562fa1fc 100644 --- a/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -10,12 +10,24 @@ namespace SqlSugar public ExpressionParameter Parameter { get; set; } public MemberExpressionResolve(ExpressionParameter parameter) : base(parameter) { - var expression = base.Expression as MemberExpression; - var isLeft = parameter.IsLeft; - string fieldName = string.Empty; var baseParameter = parameter.BaseParameter; - baseParameter.ChildExpression = expression; + var isLeft = parameter.IsLeft; var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.ChildNodeSet); + var expression = base.Expression as MemberExpression; + if (expression.Expression != null&& expression.Expression.NodeType!= ExpressionType.Parameter) { + var value= ExpressionTool.GetMemberValue(expression.Member, expression); + if (isSetTempData) + { + baseParameter.CommonTempData = value; + } + else + { + AppendValue(parameter, isLeft, value); + } + return; + } + string fieldName = string.Empty; + baseParameter.ChildExpression = expression; switch (parameter.Context.ResolveType) { case ResolveExpressType.SelectSingle: