using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Linq.Expressions; using System.Dynamic; using System.Threading.Tasks; namespace SqlSugar { #region T1 public partial class QueryableProvider : QueryableAccessory, ISugarQueryable { public SqlSugarClient Context { get; set; } public IAdo Db { get { return Context.Ado; } } public IDbBind Bind { get { return this.Db.DbBind; } } public ISqlBuilder SqlBuilder { get; set; } public MappingTableList OldMappingTableList { get; set; } public MappingTableList QueryableMappingTableList { get; set; } public bool IsCache { get; set; } public int CacheTime { get; set; } public bool IsAs { get; set; } public QueryBuilder QueryBuilder { get { return this.SqlBuilder.QueryBuilder; } set { this.SqlBuilder.QueryBuilder = value; } } public EntityInfo EntityInfo { get { return this.Context.EntityMaintenance.GetEntityInfo(); } } public void Clear() { QueryBuilder.Clear(); } public virtual ISugarQueryable AS(string tableName) { var entityName = typeof(T2).Name; return _As(tableName, entityName); } public ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; return _As(tableName, entityName); } public virtual ISugarQueryable With(string withString) { QueryBuilder.TableWithString = withString; return this; } public virtual ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public virtual ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public virtual ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public virtual ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public virtual ISugarQueryable AddParameters(SugarParameter parameter) { if (parameter != null) QueryBuilder.Parameters.Add(parameter); return this; } public virtual ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public virtual ISugarQueryable Where(Expression> expression) { this._Where(expression); return this; } public virtual ISugarQueryable Where(string whereString, object whereObj = null) { if (whereString.HasValue()) this.Where(whereString, whereObj); return this; } public virtual ISugarQueryable Where(List conditionalModels) { if (conditionalModels.IsNullOrEmpty()) return this; var sqlObj = this.Context.Utilities.ConditionalModelToSql(conditionalModels); return this.Where(sqlObj.Key, sqlObj.Value); } public virtual ISugarQueryable Where(string whereString, object whereObj = null) { var whereValue = QueryBuilder.WhereInfos; whereValue.Add(SqlBuilder.AppendWhereOrAnd(whereValue.Count == 0, whereString + UtilConstants.Space)); if (whereObj != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(whereObj)); return this; } public virtual ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public virtual ISugarQueryable Having(string whereString, object parameters = null) { QueryBuilder.HavingInfos = SqlBuilder.AppendHaving(whereString); if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public virtual ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (!isWhere) return this; _Where(expression); return this; } public virtual ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj = null) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } public virtual T InSingle(object pkValue) { var list = In(pkValue).ToList(); if (list == null) return default(T); else return list.SingleOrDefault(); } public virtual ISugarQueryable In(params TParamter[] pkValues) { if (pkValues == null || pkValues.Length == 0) { Where(SqlBuilder.SqlFalse); return this; } var pks = GetPrimaryKeys().Select(it => SqlBuilder.GetTranslationTableName(it)).ToList(); Check.Exception(pks == null || pks.Count != 1, "Queryable.In(params object[] pkValues): Only one primary key"); var filed = pks.FirstOrDefault(); var shortName = QueryBuilder.TableShortName == null ? null : (QueryBuilder.TableShortName + "."); filed = shortName + filed; return In(filed, pkValues); } public virtual ISugarQueryable In(string filed, params FieldType[] inValues) { if (inValues.Length == 1) { if (inValues.GetType().IsArray) { var whereIndex = QueryBuilder.WhereIndex; var parameterName = this.SqlBuilder.SqlParameterKeyWord + "InPara" + whereIndex; this.AddParameters(new SugarParameter(parameterName, inValues[0])); this.Where(string.Format(QueryBuilder.InTemplate, filed, parameterName)); QueryBuilder.WhereIndex++; } else { var values = new List(); foreach (var item in ((IEnumerable)inValues[0])) { if (item != null) { values.Add(item.ToString().ToSqlValue()); } } this.Where(string.Format(QueryBuilder.InTemplate, filed, string.Join(",", values))); } } else { var values = new List(); foreach (var item in inValues) { if (item != null) { values.Add(item.ToString().ToSqlValue()); } } this.Where(string.Format(QueryBuilder.InTemplate, filed, string.Join(",", values))); } return this; } public virtual ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); return In(fieldName, inValues); } public virtual ISugarQueryable In(List pkValues) { if (pkValues == null || pkValues.Count == 0) { Where(SqlBuilder.SqlFalse); return this; } return In(pkValues.ToArray()); } public virtual ISugarQueryable In(string InFieldName, List inValues) { if (inValues == null || inValues.Count == 0) { Where(SqlBuilder.SqlFalse); return this; } return In(InFieldName, inValues.ToArray()); } public virtual ISugarQueryable In(Expression> expression, List inValues) { if (inValues == null || inValues.Count == 0) { Where(SqlBuilder.SqlFalse); return this; } return In(expression, inValues.ToArray()); } public virtual ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } public virtual ISugarQueryable OrderBy(string orderFileds, string orderType = "") { var orderByValue = QueryBuilder.OrderByValue; if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { QueryBuilder.OrderByValue = QueryBuilder.OrderByTemplate; } QueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds); QueryBuilder.OrderByValue += " " + orderType; return this; } public virtual ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { this._OrderBy(expression, type); return this; } public virtual ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public virtual ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) { if (isOrderBy) return this.OrderBy(orderFileds); else return this; } public virtual ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) return this.OrderBy(expression, type); else return this; } public virtual ISugarQueryable GroupBy(string groupFileds) { var croupByValue = QueryBuilder.GroupByValue; if (QueryBuilder.GroupByValue.IsNullOrEmpty()) { QueryBuilder.GroupByValue = QueryBuilder.GroupByTemplate; } QueryBuilder.GroupByValue += string.IsNullOrEmpty(croupByValue) ? groupFileds : ("," + groupFileds); return this; } public virtual ISugarQueryable PartitionBy(Expression> expression) { if (QueryBuilder.Take == null) QueryBuilder.Take = 1; _PartitionBy(expression); return this; } public virtual ISugarQueryable PartitionBy(string groupFileds) { var partitionByValue = QueryBuilder.PartitionByValue; if (QueryBuilder.PartitionByValue.IsNullOrEmpty()) { QueryBuilder.PartitionByValue = QueryBuilder.PartitionByTemplate; } QueryBuilder.PartitionByValue += string.IsNullOrEmpty(partitionByValue) ? groupFileds : ("," + groupFileds); return this; } public virtual ISugarQueryable Skip(int num) { QueryBuilder.Skip = num; return this; } public virtual ISugarQueryable Take(int num) { QueryBuilder.Take = num; return this; } public virtual T Single() { if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { QueryBuilder.OrderByValue = QueryBuilder.DefaultOrderByTemplate; } var oldSkip = QueryBuilder.Skip; var oldTake = QueryBuilder.Take; var oldOrderBy = QueryBuilder.OrderByValue; QueryBuilder.Skip = null; QueryBuilder.Take = null; QueryBuilder.OrderByValue = null; var result = this.ToList(); QueryBuilder.Skip = oldSkip; QueryBuilder.Take = oldTake; QueryBuilder.OrderByValue = oldOrderBy; if (result == null || result.Count == 0) { return default(T); } else if (result.Count == 2) { Check.Exception(true, ".Single() result must not exceed one . You can use.First()"); return default(T); } else { return result.SingleOrDefault(); } } public virtual T Single(Expression> expression) { _Where(expression); var result = Single(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public virtual T First() { if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { QueryBuilder.OrderByValue = QueryBuilder.DefaultOrderByTemplate; } if (QueryBuilder.Skip.HasValue) { QueryBuilder.Take = 1; return this.ToList().FirstOrDefault(); } else { QueryBuilder.Skip = 0; QueryBuilder.Take = 1; var result = this.ToList(); if (result.HasValue()) return result.FirstOrDefault(); else return default(T); } } public virtual T First(Expression> expression) { _Where(expression); var result = First(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public virtual bool Any(Expression> expression) { _Where(expression); var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public virtual bool Any() { return this.Count() > 0; } public virtual ISugarQueryable Select(Expression> expression) { return _Select(expression); } public virtual ISugarQueryable Select(string selectValue) { var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.Context = this.Context; result.SqlBuilder = this.SqlBuilder; QueryBuilder.SelectValue = selectValue; return result; } public virtual ISugarQueryable Select(string selectValue) { QueryBuilder.SelectValue = selectValue; return this; } public virtual ISugarQueryable MergeTable() { Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(), "MergeTable need to use Queryable.Select Method ."); Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(), "MergeTable Queryable cannot Take Skip OrderBy PageToList "); ToSqlBefore(); var sql = QueryBuilder.ToSqlString(); var tableName = this.SqlBuilder.GetPackTable(sql, nameof(MergeTable)); var mergeQueryable = this.Context.Queryable(); mergeQueryable.QueryBuilder.Parameters = QueryBuilder.Parameters; mergeQueryable.QueryBuilder.WhereIndex = QueryBuilder.WhereIndex + 1; mergeQueryable.QueryBuilder.JoinIndex = QueryBuilder.JoinIndex + 1; mergeQueryable.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex; return mergeQueryable.AS(tableName).Select("*"); } public virtual int Count() { InitMapping(); QueryBuilder.IsCount = true; var result = 0; if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return GetCount(); }, CacheTime, this.Context); } else { result = GetCount(); } RestoreMapping(); QueryBuilder.IsCount = false; return result; } public virtual int Count(Expression> expression) { _Where(expression); var result = Count(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public virtual TResult Max(string maxField) { this.Select(string.Format(QueryBuilder.MaxTemplate, maxField)); var result = this._ToList().SingleOrDefault(); return result; } public virtual TResult Max(Expression> expression) { return _Max(expression); } public virtual TResult Min(string minField) { this.Select(string.Format(QueryBuilder.MinTemplate, minField)); var result = this._ToList().SingleOrDefault(); return result; } public virtual TResult Min(Expression> expression) { return _Min(expression); } public virtual TResult Sum(string sumField) { this.Select(string.Format(QueryBuilder.SumTemplate, sumField)); var result = this._ToList().SingleOrDefault(); return result; } public virtual TResult Sum(Expression> expression) { return _Sum(expression); } public virtual TResult Avg(string avgField) { this.Select(string.Format(QueryBuilder.AvgTemplate, avgField)); var result = this._ToList().SingleOrDefault(); return result; } public virtual TResult Avg(Expression> expression) { return _Avg(expression); } public virtual string ToJson() { return this.Context.Utilities.SerializeObject(this.ToList()); } public virtual string ToJsonPage(int pageIndex, int pageSize) { return this.Context.Utilities.SerializeObject(this.ToPageList(pageIndex, pageSize)); } public virtual string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber) { return this.Context.Utilities.SerializeObject(this.ToPageList(pageIndex, pageSize, ref totalNumber)); } public virtual DataTable ToDataTable() { InitMapping(); var sqlObj = this.ToSql(); RestoreMapping(); var result = this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); return result; } public virtual DataTable ToDataTablePage(int pageIndex, int pageSize) { if (pageIndex == 0) pageIndex = 1; if (QueryBuilder.PartitionByValue.HasValue()) { QueryBuilder.ExternalPageIndex = pageIndex; QueryBuilder.ExternalPageSize = pageSize; } else { QueryBuilder.Skip = (pageIndex - 1) * pageSize; QueryBuilder.Take = pageSize; } return ToDataTable(); } public virtual DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber) { _RestoreMapping = false; totalNumber = this.Count(); var result = ToDataTablePage(pageIndex, pageSize); _RestoreMapping = true; return result; } public virtual List ToList() { InitMapping(); return _ToList(); } public virtual List ToPageList(int pageIndex, int pageSize) { if (pageIndex == 0) pageIndex = 1; if (QueryBuilder.PartitionByValue.HasValue()) { QueryBuilder.ExternalPageIndex = pageIndex; QueryBuilder.ExternalPageSize = pageSize; } else { QueryBuilder.Skip = (pageIndex - 1) * pageSize; QueryBuilder.Take = pageSize; } return ToList(); } public virtual List ToPageList(int pageIndex, int pageSize, ref int totalNumber) { _RestoreMapping = false; List result = null; var count = this.Count(); QueryBuilder.IsDisabledGobalFilter = UtilMethods.GetOldValue(QueryBuilder.IsDisabledGobalFilter, () => { QueryBuilder.IsDisabledGobalFilter = true; result = count == 0 ? new List() : ToPageList(pageIndex, pageSize); }); totalNumber = count; _RestoreMapping = true; return result; } public virtual KeyValuePair> ToSql() { InitMapping(); ToSqlBefore(); var sql = QueryBuilder.ToSqlString(); RestoreMapping(); return new KeyValuePair>(sql, QueryBuilder.Parameters); } public ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { Check.ArgumentNullException(this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService, "Use Cache ConnectionConfig.ConfigureExternalServices.DataInfoCacheService is required "); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public string ToClassString(string className) { var columns = new List(); var properties = typeof(T).GetProperties(); foreach (var item in properties) { columns.Add(new DbColumnInfo { DbColumnName = item.Name, PropertyName = UtilMethods.GetUnderType(item.PropertyType).Name, PropertyType = UtilMethods.GetUnderType(item.PropertyType) }); } var result = ((this.Context.DbFirst) as DbFirstProvider).GetClassString(columns, ref className); return result; } #region Async methods public Task SingleAsync() { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Single(); }); TaskStart(result); return result; } public Task SingleAsync(Expression> expression) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Single(expression); }); TaskStart(result); return result; } public Task FirstAsync() { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.First(); }); TaskStart(result); return result; } public Task FirstAsync(Expression> expression) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.First(expression); }); TaskStart(result); return result; } public Task AnyAsync(Expression> expression) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Any(expression); }); TaskStart(result); return result; } public Task AnyAsync() { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Any(); }); TaskStart(result); return result; } public Task CountAsync() { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Count(); }); TaskStart(result); return result; } public Task CountAsync(Expression> expression) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Count(expression); }); TaskStart(result); ; return result; } public Task MaxAsync(string maxField) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Max(maxField); }); TaskStart(result); return result; } public Task MaxAsync(Expression> expression) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Max(expression); }); TaskStart(result); return result; } public Task MinAsync(string minField) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Min(minField); }); TaskStart(result); return result; } public Task MinAsync(Expression> expression) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Min(expression); }); TaskStart(result); return result; } public Task SumAsync(string sumField) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Sum(sumField); }); TaskStart(result); return result; } public Task SumAsync(Expression> expression) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Sum(expression); }); TaskStart(result); return result; } public Task AvgAsync(string avgField) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Avg(avgField); }); TaskStart(result); return result; } public Task AvgAsync(Expression> expression) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.Avg(expression); }); TaskStart(result); return result; } public Task> ToListAsync() { var result = new Task>(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.ToList(); }); TaskStart(result); return result; } public Task ToJsonAsync() { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.ToJson(); }); TaskStart(result); return result; } public Task ToJsonPageAsync(int pageIndex, int pageSize) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.ToJsonPage(pageIndex, pageSize); }); TaskStart(result); return result; } public Task> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber) { var result = new Task>(() => { var totalNumberAsync = 0; var asyncQueryable = CopyQueryable(); var list = asyncQueryable.ToJsonPage(pageIndex, pageSize, ref totalNumberAsync); return new KeyValuePair(list, totalNumberAsync); }); TaskStart(result); return result; } public Task ToDataTableAsync() { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.ToDataTable(); }); TaskStart(result); return result; } public Task ToDataTablePageAsync(int pageIndex, int pageSize) { var result = new Task(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.ToDataTablePage(pageIndex, pageSize); }); TaskStart(result); return result; } public Task> ToDataTablePageAsync(int pageIndex, int pageSize, int totalNumber) { var result = new Task>(() => { var totalNumberAsync = 0; var asyncQueryable = CopyQueryable(); var list = asyncQueryable.ToDataTablePage(pageIndex, pageSize, ref totalNumberAsync); return new KeyValuePair(list, totalNumberAsync); }); TaskStart(result); return result; } public Task> ToPageListAsync(int pageIndex, int pageSize) { var result = new Task>(() => { var asyncQueryable = CopyQueryable(); return asyncQueryable.ToPageList(pageIndex, pageSize); }); TaskStart(result); return result; } public Task, int>> ToPageListAsync(int pageIndex, int pageSize, int totalNumber) { var result = new Task, int>>(() => { var totalNumberAsync = 0; var asyncQueryable = CopyQueryable(); var list = asyncQueryable.ToPageList(pageIndex, pageSize, ref totalNumberAsync); return new KeyValuePair, int>(list, totalNumberAsync); }); TaskStart(result); return result; } #endregion #region Private Methods private void TaskStart(Task result) { if (this.Context.CurrentConnectionConfig.IsShardSameThread) { Check.Exception(true, "IsShardSameThread=true can't be used async method"); } result.Start(); } protected ISugarQueryable _Select(Expression expression) { var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.Context = this.Context; result.SqlBuilder = this.SqlBuilder; result.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters; result.SqlBuilder.QueryBuilder.SelectValue = expression; return result; } protected void _Where(Expression expression) { var isSingle = QueryBuilder.IsSingle(); var result = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple); QueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(QueryBuilder.WhereInfos.IsNullOrEmpty(), result.GetResultString())); } protected ISugarQueryable _OrderBy(Expression expression, OrderByType type = OrderByType.Asc) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); OrderBy(lamResult.GetResultString() + UtilConstants.Space + type.ToString().ToUpper()); return this; } protected ISugarQueryable _GroupBy(Expression expression) { var lambda = expression as LambdaExpression; expression = lambda.Body; var isSingle = QueryBuilder.IsSingle(); ExpressionResult lamResult = null; string result = null; if (expression is NewExpression) { lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple); result = string.Join(",", lamResult.GetResultArray().Select(it => it)); } else { lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); result = lamResult.GetResultString(); } GroupBy(result); return this; } protected TResult _Min(Expression expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Min(lamResult.GetResultString()); } protected TResult _Avg(Expression expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Avg(lamResult.GetResultString()); } protected TResult _Max(Expression expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Max(lamResult.GetResultString()); } protected TResult _Sum(Expression expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Sum(lamResult.GetResultString()); } protected ISugarQueryable _As(string tableName, string entityName) { IsAs = true; OldMappingTableList = this.Context.MappingTables; this.Context.MappingTables = this.Context.Utilities.TranslateCopy(this.Context.MappingTables); this.Context.MappingTables.Add(entityName, tableName); this.QueryableMappingTableList = this.Context.MappingTables; return this; } protected void _Filter(string FilterName, bool isDisabledGobalFilter) { QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter; if (this.Context.QueryFilter.GeFilterList.HasValue() && FilterName.HasValue()) { var list = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName == FilterName && it.IsJoinQuery == !QueryBuilder.IsSingle()); foreach (var item in list) { var filterResult = item.FilterValue(this.Context); Where(filterResult.Sql, filterResult.Parameters); } } } public ISugarQueryable _PartitionBy(Expression expression) { var lambda = expression as LambdaExpression; expression = lambda.Body; var isSingle = QueryBuilder.IsSingle(); ExpressionResult lamResult = null; string result = null; if (expression is NewExpression) { lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple); result = string.Join(",", lamResult.GetResultArray()); } else { lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); result = lamResult.GetResultString(); } PartitionBy(result); return this; } protected ISugarQueryable _Having(Expression expression) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple); Having(lamResult.GetResultString()); return this; } protected List _ToList() { List result = null; var sqlObj = this.ToSql(); if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; result = CacheSchemeMain.GetOrCreate>(cacheService, this.QueryBuilder, () => { return GetData(sqlObj); }, CacheTime, this.Context); } else { result = GetData(sqlObj); } RestoreMapping(); return result; } protected int GetCount() { var sql = string.Empty; ToSqlBefore(); sql = QueryBuilder.ToSqlString(); sql = QueryBuilder.ToCountSql(sql); var result = Context.Ado.GetInt(sql, QueryBuilder.Parameters.ToArray()); return result; } private void ToSqlBefore() { var moreSetts = this.Context.CurrentConnectionConfig.MoreSettings; if (moreSetts != null && moreSetts.IsWithNoLockQuery && string.IsNullOrEmpty(QueryBuilder.TableWithString)) { this.With(SqlWith.NoLock); } } protected List GetData(KeyValuePair> sqlObj) { List result; var isComplexModel = QueryBuilder.IsComplexModel(sqlObj.Key); var entityType = typeof(TResult); var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray()); if (entityType == UtilConstants.DynamicType) { result = this.Context.Utilities.DataReaderToExpandoObjectList(dataReader) as List; } else if (entityType == UtilConstants.ObjType) { result = this.Context.Utilities.DataReaderToExpandoObjectList(dataReader).Select(it => ((TResult)(object)it)).ToList(); } else result = entityType.IsAnonymousType() || isComplexModel ? this.Context.Utilities.DataReaderToDynamicList(dataReader) : this.Bind.DataReaderToList(entityType, dataReader); SetContextModel(result, entityType); return result; } protected void _InQueryable(Expression> expression, KeyValuePair> sqlObj) { var sql = sqlObj.Key; if (sqlObj.Value.HasValue()) { this.SqlBuilder.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), 100); this.QueryBuilder.Parameters.AddRange(sqlObj.Value); } var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); var whereSql = string.Format(this.QueryBuilder.InTemplate, fieldName, sql); this.QueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(this.QueryBuilder.WhereInfos.IsNullOrEmpty(), whereSql)); base._InQueryableIndex += 100; } protected List GetPrimaryKeys() { if (this.Context.IsSystemTablesConfig) { return this.Context.DbMaintenance.GetPrimaries(this.Context.EntityMaintenance.GetTableName(this.EntityInfo.EntityName)); } else { return this.EntityInfo.Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToList(); } } protected virtual List GetIdentityKeys() { if (this.Context.IsSystemTablesConfig) { return this.Context.DbMaintenance.GetIsIdentities(this.EntityInfo.DbTableName); } else { return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList(); } } protected void RestoreMapping() { if (IsAs && _RestoreMapping) { this.Context.MappingTables = OldMappingTableList == null ? new MappingTableList() : OldMappingTableList; } } protected void InitMapping() { if (this.QueryableMappingTableList != null) this.Context.MappingTables = this.QueryableMappingTableList; } private void SetContextModel(List result, Type entityType) { if (result.HasValue()) { if (entityType.GetTypeInfo().BaseType.HasValue() && entityType.GetTypeInfo().BaseType == UtilConstants.ModelType) { foreach (var item in result) { var contextProperty = item.GetType().GetProperty(nameof(Context)); var newClient = this.Context.Utilities.CopyContext(); contextProperty.SetValue(item, newClient, null); } } } } private ISugarQueryable CopyQueryable() { var asyncContext = this.Context.Utilities.CopyContext(true); asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; var asyncQueryable = asyncContext.Queryable().Select(string.Empty); var asyncQueryableBuilder = asyncQueryable.QueryBuilder; asyncQueryableBuilder.Take = this.QueryBuilder.Take; asyncQueryableBuilder.Skip = this.QueryBuilder.Skip; asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue; asyncQueryableBuilder.WhereInfos = this.QueryBuilder.WhereInfos; asyncQueryableBuilder.EasyJoinInfos = this.QueryBuilder.EasyJoinInfos; asyncQueryableBuilder.JoinQueryInfos = this.QueryBuilder.JoinQueryInfos; asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex; asyncQueryableBuilder.EntityType = this.QueryBuilder.EntityType; asyncQueryableBuilder.EntityName = this.QueryBuilder.EntityName; asyncQueryableBuilder.Parameters = this.QueryBuilder.Parameters; asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName; asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString; asyncQueryableBuilder.GroupByValue = this.QueryBuilder.GroupByValue; asyncQueryableBuilder.OrderByValue = this.QueryBuilder.OrderByValue; return asyncQueryable; } #endregion } #endregion #region T2 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region Order public new ISugarQueryable OrderBy(string orderFileds, string orderType = null) { base.OrderBy(orderFileds, orderType); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public new ISugarQueryable OrderBy(Expression> expression, OrderByType type) { _OrderBy(expression, type); return this; } public new ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) { if (isOrderBy) base.OrderBy(orderFileds); return this; } public new ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public new ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public new ISugarQueryable Having(string whereString, object whereObj) { base.Having(whereString, whereObj); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (isCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T3 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Group public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public new ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public new ISugarQueryable Having(string whereString, object whereObj) { base.Having(whereString, whereObj); return this; } #endregion #region Order public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public new ISugarQueryable OrderBy(Expression> expression, OrderByType type) { _OrderBy(expression, type); return this; } public new ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) { if (isOrderBy) base.OrderBy(orderFileds); return this; } public new ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } #endregion #region Where public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T4 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public new ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) { if (isOrderBy) base.OrderBy(orderFileds); return this; } public new ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public new ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public ISugarQueryable Having(Expression> expression) { this._Having(expression); return this; } public new ISugarQueryable Having(string whereString, object whereObj) { base.Having(whereString, whereObj); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T5 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public new ISugarQueryable OrderByIF(bool isOrderBy, string orderFileds) { if (isOrderBy) base.OrderBy(orderFileds); return this; } public new ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } public ISugarQueryable OrderByIF(bool isOrderBy, Expression> expression, OrderByType type = OrderByType.Asc) { if (isOrderBy) _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T6 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T7 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T8 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T9 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T10 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T11 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion #region T12 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; } public new ISugarQueryable Where(List conditionalModels) { base.Where(conditionalModels); return this; } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); return this; } public new ISugarQueryable Where(string whereString, object whereObj) { Where(whereString, whereObj); return this; } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; this.Where(whereString, whereObj); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; } #endregion #region GroupBy public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; } #endregion #region Aggr public TResult Max(Expression> expression) { return _Max(expression); } public TResult Min(Expression> expression) { return _Min(expression); } public TResult Sum(Expression> expression) { return _Sum(expression); } public TResult Avg(Expression> expression) { return _Avg(expression); } #endregion #region In public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, List inValues) { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable AS(string tableName) { var entityName = typeof(AsT).Name; _As(tableName, entityName); return this; } public new ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; _As(tableName, entityName); return this; } public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { _Filter(FilterName, isDisabledGobalFilter); return this; } public new ISugarQueryable AddParameters(object parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); return this; } public new ISugarQueryable AddParameters(SugarParameter[] parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddParameters(List parameters) { if (parameters != null) QueryBuilder.Parameters.AddRange(parameters); return this; } public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { QueryBuilder.JoinIndex = +1; QueryBuilder.JoinQueryInfos .Add(new JoinQueryInfo { JoinIndex = QueryBuilder.JoinIndex, TableName = tableName, ShortName = shortName, JoinType = type, JoinWhere = joinWhere }); return this; } public new ISugarQueryable With(string withString) { base.With(withString); return this; } public new ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion }