Support date.DayOfWeek

This commit is contained in:
sunkaixuan
2022-03-23 18:02:25 +08:00
parent e029494ba5
commit 18a0fe26b6
3 changed files with 29 additions and 1 deletions

View File

@@ -18,6 +18,7 @@ namespace OrmTest
var x2 = db.Queryable<Order>().Select(it => (DateTime.Now - SqlFunc.GetDate().AddDays(-1)).TotalHours).ToList();
var x3 = db.Queryable<Order>().Select(it => (DateTime.Now - SqlFunc.GetDate().AddHours(-1)).TotalMinutes).ToList();
var x4 = db.Queryable<Order>().Select(it => (DateTime.Now - SqlFunc.GetDate().AddMinutes(-1)).TotalSeconds).ToList();
var x5 = db.Queryable<Order>().Select(it =>it.CreateTime.DayOfWeek).ToList();
if (x1.Any())
{
Check.Exception(x1.First()!=365, "unit error . UCustom011");

View File

@@ -14,6 +14,7 @@ namespace SqlSugar
Hour = 4,
Second=5,
Minute=6,
Millisecond=7
Millisecond=7,
Weekday=8
}
}

View File

@@ -24,6 +24,10 @@ namespace SqlSugar
{
ResolveDateDiff(parameter, isLeft, expression);
}
else if (expression.Member.Name== "DayOfWeek"&& expression.Type==typeof(DayOfWeek))
{
ResolveDayOfWeek(parameter, isLeft, expression);
}
else if (isHasValue)
{
ResolveHasValue(parameter, expression);
@@ -212,6 +216,28 @@ namespace SqlSugar
#endregion
#region Resolve special member
private void ResolveDayOfWeek(ExpressionParameter parameter, bool? isLeft, MemberExpression expression)
{
var exp = expression.Expression;
var value = GetNewExpressionValue(exp);
var result = this.Context.DbMehtods.DateValue(new MethodCallExpressionModel()
{
Args = new List<MethodCallExpressionArgs>() {
new MethodCallExpressionArgs(){
MemberName=value,
MemberValue=value
},
new MethodCallExpressionArgs(){
MemberName=DateType.Weekday,
MemberValue=DateType.Weekday
}
}
}); ;
base.AppendMember(parameter, isLeft, result);
}
private void ResolveDateDiff(ExpressionParameter parameter, bool? isLeft, MemberExpression expression)
{
var binaryExp=expression.Expression as BinaryExpression;