This commit is contained in:
2025-04-21 14:10:27 +08:00
commit cb4c3b2935
2761 changed files with 1382589 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
namespace SqlSugar
{
public class CaseWhen
{
public CaseThen ElseIF(bool condition)
{
return null;
}
public T End<T>(T defaultValue)
{
return default(T);
}
}
public class CaseThen
{
public CaseWhen Return<T>(T result)
{
return null;
}
}
}

View File

@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
namespace SqlSugar
{
public class CaseWhenResolve
{
List<MethodCallExpression> allMethods = new List<MethodCallExpression>();
private ExpressionContext context = null;
public CaseWhenResolve(MethodCallExpression expression, ExpressionContext context, Expression oppsiteExpression)
{
this.context = context;
var currentExpression = expression;
allMethods.Add(currentExpression);
if (context.IsSingle && oppsiteExpression != null&& oppsiteExpression is MemberExpression)
{
var childExpression = (oppsiteExpression as MemberExpression).Expression;
this.context.SingleTableNameSubqueryShortName = (childExpression as ParameterExpression).Name;
}
else if (context.IsSingle)
{
this.context.SingleTableNameSubqueryShortName = (context.Expression as LambdaExpression).Parameters.First().Name;
}
while (currentExpression != null)
{
var addItem = currentExpression.Object as MethodCallExpression;
if (addItem != null)
allMethods.Add(addItem);
currentExpression = addItem;
}
}
public string GetSql()
{
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;
}
}
}