From b1df277dd7d5c653470cd7f2187b766d559d4fe5 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Sun, 9 Jan 2022 12:56:58 +0800 Subject: [PATCH] Update exp to sql --- Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs | 3 ++- .../ResolveItems/MemberExpressionResolve.cs | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs b/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs index 3798a5005..4160b26a1 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs @@ -70,7 +70,7 @@ namespace OrmTest var db = GetInstance(); var dbTime = db.GetDate(); var getAll = db.Queryable().ToList(); - var getAll2 = db.Queryable().Select(it => dbTime.ToString("yyyyMM")).ToList(); + var getAll2 = db.Queryable().Where(it=>it.CreateTime.Day>=DateTime.Now.Date.Day).ToList(); var getOrderBy = db.Queryable().OrderBy(it => it.Name,OrderByType.Desc).ToList(); var getOrderBy2 = db.Queryable().OrderBy(it => it.Id).OrderBy(it => it.Name, OrderByType.Desc).ToList(); var getOrderBy3 = db.Queryable().OrderBy(it =>new { it.Name,it.Id}).ToList(); @@ -85,6 +85,7 @@ namespace OrmTest var dp = DateTime.Now; var test05 = db.Queryable().Where(it => it.CreateTime.Month == dp.Month).ToList(); var fromatList = db.Queryable().Select(it => it.CreateTime.ToString("%Y-%m")).ToList(); + var test06 = db.Queryable().Where(it => it.CreateTime.Date.Day >= DateTime.Now.Date.Day).ToList(); Console.WriteLine("#### Examples End ####"); } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 30ce59435..5708e7528 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -337,12 +337,32 @@ namespace SqlSugar parameter.CommonTempData = CommonTempDataType.Result; this.Expression = expression.Expression; var isConst = this.Expression is ConstantExpression; + var isDateTimeNowDateStartWith = expression.ObjToString().StartsWith("DateTime.Now.Date."); + var isDateContains = expression.ObjToString().Contains(".Date."); if (this.Expression.Type == UtilConstants.DateType && this.Expression.ToString() == "DateTime.Now") { this.Expression = expression; var parameterName = base.AppendParameter(ExpressionTool.GetMemberValue(expression.Member, expression)); base.AppendMember(parameter, isLeft, parameterName); } + else if (isDateTimeNowDateStartWith) + { + this.Expression = expression; + var parameterName = base.AppendParameter(ExpressionTool.GetMemberValue(expression.Member, expression)); + base.AppendMember(parameter, isLeft, parameterName); + } + else if (isDateContains) + { + parameter.CommonTempData = base.GetNewExpressionValue(this.Expression); + var result = this.Context.DbMehtods.DateValue(new MethodCallExpressionModel() + { + Args = new List() { + new MethodCallExpressionArgs() { IsMember = !isConst, MemberName = parameter.CommonTempData, MemberValue = null }, + new MethodCallExpressionArgs() { IsMember = true, MemberName = name, MemberValue = name } + } + }); + base.AppendMember(parameter, isLeft, result); + } else { this.Start();