Update exp to sql

This commit is contained in:
sunkaixuna 2022-01-09 12:56:58 +08:00
parent 7e7a438489
commit b1df277dd7
2 changed files with 22 additions and 1 deletions

View File

@ -70,7 +70,7 @@ namespace OrmTest
var db = GetInstance();
var dbTime = db.GetDate();
var getAll = db.Queryable<Order>().ToList();
var getAll2 = db.Queryable<Order>().Select(it => dbTime.ToString("yyyyMM")).ToList();
var getAll2 = db.Queryable<Order>().Where(it=>it.CreateTime.Day>=DateTime.Now.Date.Day).ToList();
var getOrderBy = db.Queryable<Order>().OrderBy(it => it.Name,OrderByType.Desc).ToList();
var getOrderBy2 = db.Queryable<Order>().OrderBy(it => it.Id).OrderBy(it => it.Name, OrderByType.Desc).ToList();
var getOrderBy3 = db.Queryable<Order>().OrderBy(it =>new { it.Name,it.Id}).ToList();
@ -85,6 +85,7 @@ namespace OrmTest
var dp = DateTime.Now;
var test05 = db.Queryable<Order>().Where(it => it.CreateTime.Month == dp.Month).ToList();
var fromatList = db.Queryable<Order>().Select(it => it.CreateTime.ToString("%Y-%m")).ToList();
var test06 = db.Queryable<Order>().Where(it => it.CreateTime.Date.Day >= DateTime.Now.Date.Day).ToList();
Console.WriteLine("#### Examples End ####");
}

View File

@ -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<MethodCallExpressionArgs>() {
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();