SqlFuncs add methods

This commit is contained in:
sunkaixuan 2022-03-22 20:09:21 +08:00
parent 3b7450a36c
commit b624fe81bb
5 changed files with 78 additions and 0 deletions

View File

@ -180,6 +180,11 @@ namespace OrmTest
var test25 = db.Queryable<Order>().Where(it => true).Select(it => new { x1 = it.CreateTime.Month,x2=DateTime.Now.Month}).ToList();
var test26 = db.Queryable<Order>().Where(it => true).Select(it => new { x1 = it.CreateTime.Day, x2 = DateTime.Now.Day }).ToList();
var test27 = db.Queryable<Order>().Where(it => true).Select(it => new { x1 = it.CreateTime.Year, x2 = DateTime.Now.Year }).ToList();
var test28 = db.Queryable<Order>().Select(it=>SqlFunc.DateDiff(DateType.Day,Convert.ToDateTime("2021-1-1"),Convert.ToDateTime("2021-1-12"))).ToList();
var test29 = db.Queryable<Order>().Select(it =>new {x= SqlFunc.LessThan(1, 2) }).ToList();
var test30= db.Queryable<Order>().Select(it => new { x = SqlFunc.LessThanOrEqual(1, 2) }).ToList();
var test31 = db.Queryable<Order>().Select(it => new { x = SqlFunc.GreaterThan(1, 2) }).ToList();
var test32 = db.Queryable<Order>().Select(it => new { x = SqlFunc.GreaterThanOrEqual(1, 2) }).ToList();
Console.WriteLine("#### Examples End ####");
}

View File

@ -490,5 +490,41 @@ namespace SqlSugar
var parameter2= model.Args[1];
return string.Format(" ROUND({0},{1}) ", parameter.MemberName, parameter2.MemberName);
}
public string DateDiff(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
return string.Format(" DATEDIFF({0},{1},{2}) ", parameter.MemberValue?.ToString().ToSqlFilter(), parameter2.MemberName, parameter3.MemberName);
}
public string GreaterThan(MethodCallExpressionModel model)
{
//>
var parameter = model.Args[0];
var parameter2 = model.Args[1];
return string.Format(" ({0} > {1}) ", parameter.MemberName, parameter2.MemberName);
}
public string GreaterThanOrEqual(MethodCallExpressionModel model)
{
//>=
var parameter = model.Args[0];
var parameter2 = model.Args[1];
return string.Format(" ({0} >= {1}) ", parameter.MemberName, parameter2.MemberName);
}
public string LessThan(MethodCallExpressionModel model)
{
//<
var parameter = model.Args[0];
var parameter2 = model.Args[1];
return string.Format(" ({0} < {1}) ", parameter.MemberName, parameter2.MemberName);
}
public string LessThanOrEqual(MethodCallExpressionModel model)
{
//<=
var parameter = model.Args[0];
var parameter2 = model.Args[1];
return string.Format(" ({0} <= {1}) ", parameter.MemberName, parameter2.MemberName);
}
}
}

View File

@ -75,5 +75,11 @@ namespace SqlSugar
string Format(MethodCallExpressionModel model);
string Abs(MethodCallExpressionModel model);
string Round(MethodCallExpressionModel model);
string DateDiff(MethodCallExpressionModel model);
string GreaterThan(MethodCallExpressionModel model);
string GreaterThanOrEqual(MethodCallExpressionModel model);
string LessThan(MethodCallExpressionModel model);
string LessThanOrEqual(MethodCallExpressionModel model);
}
}

View File

@ -9,6 +9,27 @@ namespace SqlSugar
{
public partial class SqlFunc
{
public static int DateDiff(DateType dateType,DateTime littleTime, DateTime bigTime)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static bool GreaterThan(object thisValue,object gtValue)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static bool GreaterThanOrEqual(object thisValue, object gtValue)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static bool LessThan(object thisValue, object ltValue)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static bool LessThanOrEqual(object thisValue, object ltValue)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static bool HasNumber(object thisValue)
{
return thisValue.ObjToInt() > 0;

View File

@ -856,6 +856,16 @@ namespace SqlSugar
return this.Context.DbMehtods.Abs(model);
case "Round":
return this.Context.DbMehtods.Round(model);
case "DateDiff":
return this.Context.DbMehtods.DateDiff(model);
case "GreaterThan":
return this.Context.DbMehtods.GreaterThan(model);
case "GreaterThanOrEqual":
return this.Context.DbMehtods.GreaterThanOrEqual(model);
case "LessThan":
return this.Context.DbMehtods.LessThan(model);
case "LessThanOrEqual":
return this.Context.DbMehtods.LessThanOrEqual(model);
default:
break;
}