mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-22 20:13:41 +08:00
Update exp to sql
This commit is contained in:
@@ -211,6 +211,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public ISugarQueryable<T> Filter(Type type)
|
public ISugarQueryable<T> Filter(Type type)
|
||||||
{
|
{
|
||||||
|
this.Context.InitMappingInfo(type);
|
||||||
var whereString= QueryBuilder.GetFilters(type);
|
var whereString= QueryBuilder.GetFilters(type);
|
||||||
if (whereString.HasValue())
|
if (whereString.HasValue())
|
||||||
{
|
{
|
||||||
@@ -1059,6 +1060,30 @@ namespace SqlSugar
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var selects = this.QueryBuilder.GetSelectValueByString();
|
var selects = this.QueryBuilder.GetSelectValueByString();
|
||||||
|
if (selects.ObjToString().ToLower().IsContainsIn(".","("," as "))
|
||||||
|
{
|
||||||
|
return this.Select<TResult>(selects);
|
||||||
|
}
|
||||||
|
var resultColumns=this.Context.EntityMaintenance.GetEntityInfo<TResult>().Columns;
|
||||||
|
var dbColumns = this.EntityInfo.Columns.Where(it=>!it.IsIgnore);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
foreach (var item in resultColumns)
|
||||||
|
{
|
||||||
|
var firstColumn= dbColumns.FirstOrDefault(z =>
|
||||||
|
z.PropertyName.EqualCase(item.PropertyName) ||
|
||||||
|
z.DbColumnName.EqualCase(item.PropertyName));
|
||||||
|
if (firstColumn != null)
|
||||||
|
{
|
||||||
|
var dbColumnName = firstColumn.DbColumnName;
|
||||||
|
var AsName = item.PropertyName;
|
||||||
|
sb.Append($"{this.SqlBuilder.GetTranslationColumnName(dbColumnName)} AS {AsName} ,");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
selects = sb.ToString().TrimEnd(',');
|
||||||
|
if (selects == "")
|
||||||
|
{
|
||||||
|
selects = "*";
|
||||||
|
}
|
||||||
return this.Select<TResult>(selects);
|
return this.Select<TResult>(selects);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -130,6 +130,14 @@ namespace SqlSugar
|
|||||||
return newExp;
|
return newExp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetMethodName(Expression expression)
|
||||||
|
{
|
||||||
|
if (expression is MethodCallExpression)
|
||||||
|
{
|
||||||
|
return (expression as MethodCallExpression).Method.Name;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public static Type GetMemberInfoType(MemberInfo member)
|
public static Type GetMemberInfoType(MemberInfo member)
|
||||||
{
|
{
|
||||||
|
@@ -530,6 +530,11 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (IsExtSqlFuncObj(item))
|
||||||
|
{
|
||||||
|
var value = GetNewExpressionValue(item);
|
||||||
|
parameter.Context.Result.Append($" {value} AS {asName} ");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
asName = GetAsNameResolveAnObject(parameter, item, asName, isSameType);
|
asName = GetAsNameResolveAnObject(parameter, item, asName, isSameType);
|
||||||
@@ -744,6 +749,11 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Validate
|
#region Validate
|
||||||
|
|
||||||
|
private bool IsExtSqlFuncObj(Expression item)
|
||||||
|
{
|
||||||
|
return this.Context.SqlFuncServices != null && item is MethodCallExpression && this.Context.SqlFuncServices.Any(it => it.UniqueMethodName == ExpressionTool.GetMethodName(item));
|
||||||
|
}
|
||||||
private bool IsNullValue(ExpressionParameter parameter, object value)
|
private bool IsNullValue(ExpressionParameter parameter, object value)
|
||||||
{
|
{
|
||||||
return value == null
|
return value == null
|
||||||
|
@@ -30,6 +30,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public ISugarQueryable<T> OrderBy(List<OrderByModel> models)
|
public ISugarQueryable<T> OrderBy(List<OrderByModel> models)
|
||||||
{
|
{
|
||||||
|
if (models == null || models.Count == 0)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
var orderObj = this.SqlBuilder.OrderByModelToSql(models);
|
var orderObj = this.SqlBuilder.OrderByModelToSql(models);
|
||||||
this.OrderBy(orderObj.Key);
|
this.OrderBy(orderObj.Key);
|
||||||
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
||||||
@@ -37,6 +41,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public ISugarQueryable<T> GroupBy(List<GroupByModel> models)
|
public ISugarQueryable<T> GroupBy(List<GroupByModel> models)
|
||||||
{
|
{
|
||||||
|
if (models == null || models.Count == 0)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
var orderObj = this.SqlBuilder.GroupByModelToSql(models);
|
var orderObj = this.SqlBuilder.GroupByModelToSql(models);
|
||||||
this.GroupBy(orderObj.Key);
|
this.GroupBy(orderObj.Key);
|
||||||
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
|
||||||
|
Reference in New Issue
Block a user