diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index aa3a35027..9cbd3e22c 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -894,7 +894,7 @@ namespace SqlSugar public virtual List ToList(Expression> expression) { - if (this.QueryBuilder.Includes.Count > 0) + if (this.QueryBuilder.Includes != null && this.QueryBuilder.Includes.Count > 0) { var list = this.ToList().Select(expression.Compile()).ToList(); return list; @@ -905,6 +905,20 @@ namespace SqlSugar return list; } } + public async virtual Task> ToListAsync(Expression> expression) + { + if (this.QueryBuilder.Includes != null && this.QueryBuilder.Includes.Count > 0) + { + var result = await this.ToListAsync(); + var list = result.Select(expression.Compile()).ToList(); + return list; + } + else + { + var list = await this.Select(expression).ToListAsync(); + return list; + } + } public virtual ISugarQueryable Select(Expression> expression) { Check.ExceptionEasy(this.QueryBuilder.Includes.HasValue(), $"use Includes(...).ToList(it=>new {typeof(TResult).Name} {{...}} )", $"Includes()后面禁使用Select,正确写法: ToList(it=>new {typeof(TResult).Name}{{....}})"); @@ -1870,7 +1884,7 @@ namespace SqlSugar } public virtual List ToPageList(int pageIndex, int pageSize, ref int totalNumber,Expression> expression) { - if (this.QueryBuilder.Includes.Count > 0) + if (this.QueryBuilder.Includes!=null&&this.QueryBuilder.Includes.Count > 0) { var list = this.ToPageList(pageIndex,pageSize,ref totalNumber).Select(expression.Compile()).ToList(); return list; @@ -2130,9 +2144,9 @@ namespace SqlSugar pageIndex = _PageList(pageIndex, pageSize); return ToListAsync(); } - public async virtual Task> ToPageList(int pageIndex, int pageSize, RefAsync totalNumber, Expression> expression) + public async virtual Task> ToPageListAsync(int pageIndex, int pageSize, RefAsync totalNumber, Expression> expression) { - if (this.QueryBuilder.Includes.Count > 0) + if (this.QueryBuilder.Includes!=null&&this.QueryBuilder.Includes.Count > 0) { var pList = await this.ToPageListAsync(pageIndex, pageSize, totalNumber); var list = pList.Select(expression.Compile()).ToList(); diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index bc8e07523..a34f6ba56 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -134,6 +134,7 @@ namespace SqlSugar TResult Avg(Expression> expression); Task AvgAsync(Expression> expression); List ToList(Expression> expression); + Task> ToListAsync(Expression> expression); List ToList(); List SetContext(Expression> thisFiled, Expression> mappingFiled, ParameterT parameter); List SetContext(Expression> thisFiled1, Expression> mappingFiled1, Expression> thisFiled2, Expression> mappingFiled2, ParameterT parameter); @@ -176,8 +177,10 @@ namespace SqlSugar List ToPageList(int pageNumber, int pageSize); Task> ToPageListAsync(int pageNumber, int pageSize); List ToPageList(int pageNumber, int pageSize, ref int totalNumber); + List ToPageList(int pageIndex, int pageSize, ref int totalNumber, Expression> expression); List ToPageList(int pageNumber, int pageSize, ref int totalNumber,ref int totalPage); Task> ToPageListAsync(int pageNumber, int pageSize, RefAsync totalNumber); + Task> ToPageListAsync(int pageIndex, int pageSize, RefAsync totalNumber, Expression> expression); Task> ToPageListAsync(int pageNumber, int pageSize, RefAsync totalNumber, RefAsync totalPage); ISugarQueryable WithCache(string cacheKey,int cacheDurationInSeconds = int.MaxValue); ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue);