update exp to sql

This commit is contained in:
sunkaixuna
2021-12-24 22:06:23 +08:00
parent 968463589b
commit 63bea7b182
5 changed files with 28 additions and 9 deletions

View File

@@ -258,9 +258,9 @@ namespace OrmTest
var list2 = db.Queryable<Order>().Where(it =>
SqlFunc.Subqueryable<OrderItem>()
.LeftJoin<OrderItem>((i,y)=>i.ItemId==y.ItemId)
.LeftJoin<OrderItem>((i,y)=>i.ItemId==y.ItemId&&2==2)
.InnerJoin<OrderItem>((i,y,z) => i.ItemId == z.ItemId)
.Where((i ,y)=>i.ItemId==1)
.Where((i ,y,z)=>i.ItemId==z.ItemId)
.Any()
).ToList();
;

View File

@@ -50,11 +50,11 @@ namespace SqlSugar
var joinString =string.Format(" {2} INNER JOIN {1} {0} ",
this.Context.GetTranslationColumnName(parameter.Name),
tableName,
this.Context.JoinIndex==1?name:"");
null);
var result = joinString+ "ON " + SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple);
//var selfParameterName = Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters.First().Name) + UtilConstants.Dot;
this.Context.JoinIndex++;
new SubSelect() { Context=this.Context}.SetShortName(exp, "+");
//result = result.Replace(selfParameterName, SubTools.GetSubReplace(this.Context));
return result;
}

View File

@@ -50,11 +50,11 @@ namespace SqlSugar
var joinString =string.Format(" {2} LEFT JOIN {1} {0} ",
this.Context.GetTranslationColumnName(parameter.Name),
tableName,
this.Context.JoinIndex==1?name:"");
null);
var result = joinString+ "ON " + SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple);
//var selfParameterName = Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters.First().Name) + UtilConstants.Dot;
this.Context.JoinIndex++;
new SubSelect() { Context = this.Context }.SetShortName(exp, "+");
//result = result.Replace(selfParameterName, SubTools.GetSubReplace(this.Context));
return result;
}

View File

@@ -60,7 +60,7 @@ namespace SqlSugar
return result;
}
private void SetShortName(MethodCallExpression exp, string result)
public void SetShortName(MethodCallExpression exp, string result)
{
if (exp.Arguments[0] is LambdaExpression && result.IsContainsIn("+", "-"))
{

View File

@@ -100,10 +100,29 @@ namespace SqlSugar
{
GetShortName(sqlItems);
}
var sql = string.Join(UtilConstants.Space, sqlItems);
var sql = "";
if (sqlItems.Count(it => IsJoin(it)) > 1)
{
var index = sqlItems.IndexOf(sqlItems.First(x=>IsJoin(x)));
var joinitems = sqlItems.Where(it => IsJoin(it)).ToList();
joinitems.Reverse();
var items = sqlItems.Where(it => !IsJoin(it)).ToList();
items.InsertRange(index, joinitems);
sql = string.Join(UtilConstants.Space, items);
}
else
{
sql = string.Join(UtilConstants.Space, sqlItems);
}
return this.context.DbMehtods.Pack(sql);
}
private static bool IsJoin(string it)
{
return it.StartsWith(" INNER JOIN") || it.StartsWith(" LEFT JOIN");
}
private void GetSubAs(List<string> sqlItems, List<string> asItems)
{
for (int i = 0; i < sqlItems.Count; i++)