Update exp to sql

This commit is contained in:
sunkaixuan
2019-04-15 20:43:50 +08:00
parent 6f3dd0528e
commit 5a3708172e
2 changed files with 34 additions and 0 deletions

View File

@@ -447,6 +447,10 @@ namespace OrmTest.Demo
}).ToList(); }).ToList();
var test46 = db.Queryable<Student>().Where(it => it.CreateTime > SqlFunc.ToDate(DateTime.Now.Date)).ToList(); var test46 = db.Queryable<Student>().Where(it => it.CreateTime > SqlFunc.ToDate(DateTime.Now.Date)).ToList();
var test47 = db.Queryable<Student>().Where(it =>string.IsNullOrEmpty(it.Name)==true).ToList(); var test47 = db.Queryable<Student>().Where(it =>string.IsNullOrEmpty(it.Name)==true).ToList();
var test48 = db.Queryable<Student>().Where(it=>it.CreateTime!=null).Where(it => SqlFunc.ToDate(it.CreateTime).Date==DateTime.Now.Date).ToList();
var test49 = db.Queryable<Student>().Where(it => it.CreateTime != null).Where(it => SqlFunc.ToDate(it.CreateTime).Year == DateTime.Now.Year).ToList();
var test50 = db.Queryable<Student>().Where(it => it.CreateTime != null).Where(it => SqlFunc.ToDate(it.CreateTime).Year == SqlFunc.GetDate().Year).ToList();
var test51 = db.Queryable<Student>().Select(it=>new { x= SqlFunc.ToDate(it.CreateTime).Year+"-" }).ToList();
} }
public static void Page() public static void Page()
{ {

View File

@@ -36,6 +36,10 @@ namespace SqlSugar
{ {
ResolveValue(parameter, baseParameter, expression, isLeft, isSetTempData, isSingle); ResolveValue(parameter, baseParameter, expression, isLeft, isSetTempData, isSingle);
} }
else if (expression.Expression != null &&expression.Expression.Type==UtilConstants.DateType&&expression is MemberExpression && expression.Expression is MethodCallExpression)
{
ResolveDateDateByCall(parameter, isLeft, expression);
}
else if (isDateDate) else if (isDateDate)
{ {
ResolveDateDate(parameter, isLeft, expression); ResolveDateDate(parameter, isLeft, expression);
@@ -54,6 +58,7 @@ namespace SqlSugar
} }
} }
#region Resolve default #region Resolve default
private void ResolveDefault(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData, bool isSingle) private void ResolveDefault(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData, bool isSingle)
{ {
@@ -164,6 +169,31 @@ namespace SqlSugar
#endregion #endregion
#region Resolve special member #region Resolve special member
private void ResolveDateDateByCall(ExpressionParameter parameter, bool? isLeft, MemberExpression expression)
{
var value = GetNewExpressionValue(expression.Expression);
if (expression.Member.Name == "Date")
{
AppendMember(parameter, isLeft, GetToDate(this.Context.DbMehtods.MergeString(
this.GetDateValue(value, DateType.Year),
"'-'",
this.GetDateValue(value, DateType.Month),
"'-'",
this.GetDateValue(value, DateType.Day))));
}
else
{
foreach (int myCode in Enum.GetValues(typeof(DateType)))
{
string strName = Enum.GetName(typeof(DateType), myCode);//获取名称
if (expression.Member.Name == strName)
{
AppendMember(parameter, isLeft, this.Context.DbMehtods.MergeString(this.GetDateValue(value, (DateType)(myCode))));
}
}
}
}
private MemberExpression ResolveValue(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData, bool isSingle) private MemberExpression ResolveValue(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, bool? isLeft, bool isSetTempData, bool isSingle)
{ {
expression = expression.Expression as MemberExpression; expression = expression.Expression as MemberExpression;