mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 16:18:47 +08:00
4.6.0.1
This commit is contained in:
parent
c6b47f4caf
commit
411296e20a
@ -232,6 +232,12 @@ namespace OrmTest.Demo
|
|||||||
var getDay1List = db.Queryable<Student>().Where(it => it.CreateTime.Value.Hour == 1).ToList();
|
var getDay1List = db.Queryable<Student>().Where(it => it.CreateTime.Value.Hour == 1).ToList();
|
||||||
var getDateAdd = db.Queryable<Student>().Where(it => it.CreateTime.Value.AddDays(1) == DateTime.Now).ToList();
|
var getDateAdd = db.Queryable<Student>().Where(it => it.CreateTime.Value.AddDays(1) == DateTime.Now).ToList();
|
||||||
var getDateIsSame = db.Queryable<Student>().Where(it => SqlFunc.DateIsSame(DateTime.Now, DateTime.Now, DateType.Hour)).ToList();
|
var getDateIsSame = db.Queryable<Student>().Where(it => SqlFunc.DateIsSame(DateTime.Now, DateTime.Now, DateType.Hour)).ToList();
|
||||||
|
var test2 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id)
|
||||||
|
.Where(st =>
|
||||||
|
SqlFunc.IF(st.Id > 1)
|
||||||
|
.Return(st.Id)
|
||||||
|
.ElseIF(st.Id == 1)
|
||||||
|
.Return(st.SchoolId).End(st.Id) == 1).Select(st => st).ToList();
|
||||||
}
|
}
|
||||||
public static void Page()
|
public static void Page()
|
||||||
{
|
{
|
||||||
|
@ -289,7 +289,7 @@ namespace OrmTest.Demo
|
|||||||
SqlFunc.IF(st.Id > 1)
|
SqlFunc.IF(st.Id > 1)
|
||||||
.Return(st.Id)
|
.Return(st.Id)
|
||||||
.ElseIF(st.Id == 1)
|
.ElseIF(st.Id == 1)
|
||||||
.Return(st.SchoolId).End(st.Id) == 1).ToList();
|
.Return(st.SchoolId).End(st.Id) == 1).Select(st=>st).ToList();
|
||||||
var test3 = db.Queryable<DataTestInfo2>().Select(it => it.Bool1).ToSql();
|
var test3 = db.Queryable<DataTestInfo2>().Select(it => it.Bool1).ToSql();
|
||||||
var test4 = db.Queryable<DataTestInfo2>().Select(it => new { b=it.Bool1 }).ToSql();
|
var test4 = db.Queryable<DataTestInfo2>().Select(it => new { b=it.Bool1 }).ToSql();
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
List<MethodCallExpression> allMethods = new List<MethodCallExpression>();
|
List<MethodCallExpression> allMethods = new List<MethodCallExpression>();
|
||||||
private ExpressionContext context = null;
|
private ExpressionContext context = null;
|
||||||
private bool hasWhere;
|
|
||||||
public CaseWhenResolve(MethodCallExpression expression, ExpressionContext context, Expression oppsiteExpression)
|
public CaseWhenResolve(MethodCallExpression expression, ExpressionContext context, Expression oppsiteExpression)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
@ -42,7 +41,17 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public string GetSql()
|
public string GetSql()
|
||||||
{
|
{
|
||||||
return "";
|
allMethods.Reverse();
|
||||||
|
List<KeyValuePair<string, string>> sqls = new List<KeyValuePair<string, string>>();
|
||||||
|
foreach (var methodExp in allMethods)
|
||||||
|
{
|
||||||
|
var isFirst = allMethods.First() == methodExp;
|
||||||
|
var isLast= allMethods.Last() == methodExp;
|
||||||
|
var sql= SubTools.GetMethodValue(this.context, methodExp.Arguments[0],this.context.IsSingle?ResolveExpressType.WhereSingle:ResolveExpressType.WhereMultiple);
|
||||||
|
sqls.Add(new KeyValuePair<string, string>(methodExp.Method.Name, sql));
|
||||||
|
}
|
||||||
|
var result= this.context.DbMehtods.CaseWhen(sqls);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -324,5 +324,29 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return "GETDATE()";
|
return "GETDATE()";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual string CaseWhen(List<KeyValuePair<string, string>> sqls)
|
||||||
|
{
|
||||||
|
StringBuilder reslut = new StringBuilder();
|
||||||
|
foreach (var item in sqls)
|
||||||
|
{
|
||||||
|
if (item.Key == "IF")
|
||||||
|
{
|
||||||
|
reslut.AppendFormat(" ( CASE WHEN {0} ", item.Value);
|
||||||
|
}
|
||||||
|
else if (item.Key == "End")
|
||||||
|
{
|
||||||
|
reslut.AppendFormat("ELSE {0} END )", item.Value);
|
||||||
|
}
|
||||||
|
else if (item.Key == "Return")
|
||||||
|
{
|
||||||
|
reslut.AppendFormat(" THEN {0} ", item.Value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
reslut.AppendFormat(" WHEN {0} ", item.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return reslut.ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ namespace SqlSugar
|
|||||||
string ToGuid(MethodCallExpressionModel model);
|
string ToGuid(MethodCallExpressionModel model);
|
||||||
string ToDouble(MethodCallExpressionModel model);
|
string ToDouble(MethodCallExpressionModel model);
|
||||||
string ToBool(MethodCallExpressionModel model);
|
string ToBool(MethodCallExpressionModel model);
|
||||||
|
string CaseWhen(List<KeyValuePair<string,string>> sqls);
|
||||||
string Substring(MethodCallExpressionModel model);
|
string Substring(MethodCallExpressionModel model);
|
||||||
string ToDate(MethodCallExpressionModel model);
|
string ToDate(MethodCallExpressionModel model);
|
||||||
string ToTime(MethodCallExpressionModel model);
|
string ToTime(MethodCallExpressionModel model);
|
||||||
|
@ -56,7 +56,16 @@ namespace SqlSugar
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (IsIfElse(express, methodName)) {
|
else if (IsIfElse(express, methodName)) {
|
||||||
List<Expression> expList = new List<Expression>();
|
CaseWhenResolve caseResole = new CaseWhenResolve(express, this.Context, parameter.OppsiteExpression);
|
||||||
|
var appendSql = caseResole.GetSql();
|
||||||
|
if (this.Context.ResolveType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle))
|
||||||
|
{
|
||||||
|
parameter.BaseParameter.CommonTempData = appendSql;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
base.AppendValue(parameter, isLeft, appendSql);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (IsContainsArray(express, methodName, isValidNativeMethod))
|
if (IsContainsArray(express, methodName, isValidNativeMethod))
|
||||||
|
Loading…
Reference in New Issue
Block a user