mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 10:08:19 +08:00
update exp to sql
This commit is contained in:
@@ -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();
|
||||
;
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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("+", "-"))
|
||||
{
|
||||
|
@@ -96,14 +96,33 @@ namespace SqlSugar
|
||||
{
|
||||
GetSubAs(sqlItems, asItems);
|
||||
}
|
||||
if (this.context.CurrentShortName.HasValue())
|
||||
if (this.context.CurrentShortName.HasValue())
|
||||
{
|
||||
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++)
|
||||
|
Reference in New Issue
Block a user