diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs index 7a9109e5c..e45ed5dac 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs @@ -878,6 +878,20 @@ namespace SqlSugar #endregion #region Other + protected string AppendSelect(List entityColumnInfos,string sql, ReadOnlyCollection parameters, List columnsResult, int parameterIndex1) + { + var columns = entityColumnInfos; + var parameterName = parameters[parameterIndex1]; + foreach (var item in columns) + { + if (item.IsIgnore == false && columnsResult.Any(it => it.PropertyName.EqualCase(item.PropertyName)) && !sql.ToLower().Contains(SqlBuilder.GetTranslationColumnName(item.PropertyName.ToLower()))) + { + sql = $" {sql},{SqlBuilder.GetTranslationColumnName(item.DbColumnName)} AS {SqlBuilder.GetTranslationColumnName(item.PropertyName)} "; + } + } + + return sql; + } protected string AppendSelect(string sql, ReadOnlyCollection parameters, List columnsResult, int parameterIndex1) { var columns = this.Context.EntityMaintenance.GetEntityInfo().Columns; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 833d5c932..5428b2be0 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -958,6 +958,24 @@ namespace SqlSugar Check.ExceptionEasy(this.QueryBuilder.Includes.HasValue(), $"use Includes(...).ToList(it=>new {typeof(TResult).Name} {{...}} )", $"Includes()后面禁使用Select,正确写法: ToList(it=>new {typeof(TResult).Name}{{....}})"); return _Select(expression); } + public ISugarQueryable Select(Expression> expression, bool isAutoFill) + { + var ps = this.Clone().Select(expression).QueryBuilder; + var sql = ps.GetSelectValue; + if (string.IsNullOrEmpty(sql) || sql.Trim() == "*") + { + return this.Select(expression); + } + if (ps.Parameters != null && ps.Parameters.Any()) + { + this.QueryBuilder.Parameters.AddRange(ps.Parameters); + this.QueryBuilder.LambdaExpressions.ParameterIndex += ps.Parameters.Count; + } + var parameters = (expression as LambdaExpression).Parameters; + var columnsResult = this.Context.EntityMaintenance.GetEntityInfo().Columns; + sql = AppendSelect(this.EntityInfo.Columns,sql, parameters, columnsResult, 0); + return this.Select(sql); + } public virtual ISugarQueryable Select() { diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs index f96fd90fd..171f0eab3 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs @@ -122,6 +122,7 @@ namespace SqlSugar Task AnyAsync(); ISugarQueryable Select(Expression> expression); + ISugarQueryable Select(Expression> expression,bool isAutoFill); ISugarQueryable Select(); ISugarQueryable Select(string select); ISugarQueryable Select(string select);