using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Text.RegularExpressions; using System.Reflection; using System.Dynamic; using System.Threading.Tasks; namespace SqlSugar { #region T1 public partial class QueryableProvider : QueryableAccessory, ISugarQueryable { public SqlSugarProvider 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 Action MapperAction { get; set; } public Action> MapperActionWithCache { get; set; } public List>> Mappers { 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 ISugarQueryable IgnoreColumns(Expression> columns) { var ignoreColumns = QueryBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it).ToLower()).ToList(); return IgnoreColumns(ignoreColumns.ToArray()); } public ISugarQueryable IgnoreColumns(params string[] columns) { if (QueryBuilder.IgnoreColumns.IsNullOrEmpty()) { QueryBuilder.IgnoreColumns = new List(); } QueryBuilder.IgnoreColumns.AddRange(columns); return this; } public void AddQueue() { var sqlObj = this.ToSql(); this.Context.Queues.Add(sqlObj.Key, sqlObj.Value); } public ISugarQueryable Clone() { var queryable = this.Context.Queryable().WithCacheIF(IsCache, CacheTime); CopyQueryBuilder(queryable.QueryBuilder); ((QueryableProvider)queryable).MapperAction = this.MapperAction; ((QueryableProvider)queryable).MapperActionWithCache = this.MapperActionWithCache; ((QueryableProvider)queryable).Mappers = this.Mappers; return queryable; } 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 Mapper(Action mapperAction) { this.MapperAction = mapperAction; return this; } public virtual ISugarQueryable Mapper(Action> mapperAction) { this.MapperActionWithCache = mapperAction; return this; } public ISugarQueryable Mapper(Expression> mapperObject, Expression> mainField, Expression> childField) { return _Mapper(mapperObject, mainField, childField); } public ISugarQueryable Mapper(Expression>> mapperObject, Expression> mainField, Expression> childField) { return _Mapper(mapperObject, mainField, childField); } public virtual ISugarQueryable Mapper(Expression>> mapperObject, Expression> mapperField) { return _Mapper(mapperObject, mapperField); } public virtual ISugarQueryable Mapper(Expression> mapperObject, Expression> mapperField) { return _Mapper(mapperObject, mapperField); } 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; } /// /// if a property that is not empty is a condition /// /// /// public ISugarQueryable WhereClass(ClassType whereClass, bool ignoreDefaultValue = false) where ClassType : class, new() { return WhereClass(new List() { whereClass }, ignoreDefaultValue); } /// /// if a property that is not empty is a condition /// /// /// public ISugarQueryable WhereClass(List whereClassTypes, bool ignoreDefaultValue = false) where ClassType : class, new() { if (whereClassTypes.HasValue()) { var columns = this.Context.EntityMaintenance.GetEntityInfo().Columns.Where(it => it.IsIgnore == false).ToList(); List whereModels = new List(); foreach (var item in whereClassTypes) { var cons = new ConditionalCollections(); foreach (var column in columns) { var value = column.PropertyInfo.GetValue(item, null); WhereType WhereType = WhereType.And; var isNotNull = ignoreDefaultValue == false && value != null; var isNotNullAndDefault = ignoreDefaultValue && value != null && value.ObjToString() != UtilMethods.DefaultForType(column.PropertyInfo.PropertyType).ObjToString(); if (isNotNull || isNotNullAndDefault) { if (cons.ConditionalList == null) { cons.ConditionalList = new List>(); if (QueryBuilder.WhereInfos.IsNullOrEmpty() && whereModels.IsNullOrEmpty()) { } else { WhereType = WhereType.Or; } } cons.ConditionalList.Add(new KeyValuePair(WhereType, new ConditionalModel() { ConditionalType = ConditionalType.Equal, FieldName = column.DbColumnName, FieldValue = value.ObjToString() })); } } if (cons.HasValue()) { whereModels.Add(cons); } } this.Where(whereModels); } 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.SqlBuilder.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) { Check.Exception(this.QueryBuilder.SelectValue.HasValue(), "'InSingle' and' Select' can't be used together,You can use .Select(it=>...).Single(it.id==1)"); 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; } if (pkValues.Length == 1 && pkValues.First().GetType().FullName.IsCollectionsList() || (pkValues.First() is IEnumerable && pkValues.First().GetType() != UtilConstants.StringType)) { var newValues = new List(); foreach (var item in pkValues.First() as IEnumerable) { newValues.Add(item); } return In(newValues); } 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"); string filed = pks.FirstOrDefault(); string 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; string 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) { QueryBuilder.CheckExpression(expression, "In"); 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) { var orderByValue = QueryBuilder.OrderByValue; if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { QueryBuilder.OrderByValue = QueryBuilder.OrderByTemplate; } QueryBuilder.OrderByValue += string.IsNullOrEmpty(orderByValue) ? orderFileds : ("," + orderFileds); 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() { var isJoin = this.QueryBuilder.JoinExpression != null; if (isJoin) { var selectValue = new SugarMapper(this.Context).GetSelectValue(this.QueryBuilder); return this.Select(selectValue); } else { return this.Select(this.SqlBuilder.SqlSelectAll); } } public virtual ISugarQueryable Select(string selectValue) { var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.Context = this.Context; result.SqlBuilder = this.SqlBuilder; QueryBuilder.SelectValue = selectValue; if (this.IsAs) { ((QueryableProvider)result).IsAs = true; } return result; } public virtual ISugarQueryable Select(string selectValue) { QueryBuilder.SelectValue = selectValue; return this; } public virtual ISugarQueryable MergeTable() { Check.Exception(this.MapperAction != null || this.MapperActionWithCache != null, "'Mapper’ needs to be written after ‘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, "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 ISugarQueryable Distinct() { QueryBuilder.IsDistinct = true; return this; } public virtual int Count() { MappingTableList expMapping; int result; _CountBegin(out expMapping, out result); if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return GetCount(); }, CacheTime, this.Context); } else { result = GetCount(); } _CountEnd(expMapping); 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 T[] ToArray() { var result = this.ToList(); if (result.HasValue()) return result.ToArray(); else return null; } public virtual string ToJson() { if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; var result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Context.Utilities.SerializeObject(this.ToList(),typeof(T)); }, CacheTime, this.Context); return result; } else { return this.Context.Utilities.SerializeObject(this.ToList(), typeof(T)); } } public virtual string ToJsonPage(int pageIndex, int pageSize) { return this.Context.Utilities.SerializeObject(this.ToPageList(pageIndex, pageSize), typeof(T)); } public virtual string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber) { return this.Context.Utilities.SerializeObject(this.ToPageList(pageIndex, pageSize, ref totalNumber), typeof(T)); } public virtual DataTable ToDataTable() { InitMapping(); var sqlObj = this.ToSql(); RestoreMapping(); DataTable result = null; if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); }, CacheTime, this.Context); } else { 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(); _RestoreMapping = true; var result = ToDataTablePage(pageIndex, pageSize); return result; } public virtual DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber, ref int totalPage) { var result = ToDataTablePage(pageIndex, pageSize, ref totalNumber); totalPage = (totalNumber + pageSize - 1) / pageSize; return result; } public virtual List ToList() { InitMapping(); return _ToList(); } public virtual List ToPageList(int pageIndex, int pageSize) { pageIndex = _PageList(pageIndex, pageSize); return ToList(); } public virtual List ToPageList(int pageIndex, int pageSize, ref int totalNumber) { _RestoreMapping = false; List result = null; int count = this.Count(); _RestoreMapping = true; QueryBuilder.IsDisabledGobalFilter = UtilMethods.GetOldValue(QueryBuilder.IsDisabledGobalFilter, () => { QueryBuilder.IsDisabledGobalFilter = true; if (count == 0) result = new List(); else result = ToPageList(pageIndex, pageSize); }); totalNumber = count; return result; } public virtual List ToPageList(int pageIndex, int pageSize, ref int totalNumber, ref int totalPage) { var result = ToPageList(pageIndex, pageSize, ref totalNumber); totalPage = (totalNumber + pageSize - 1) / pageSize; return result; } public virtual KeyValuePair> ToSql() { InitMapping(); ToSqlBefore(); string sql = QueryBuilder.ToSqlString(); RestoreMapping(); return new KeyValuePair>(sql, QueryBuilder.Parameters); } public ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (isCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public string ToClassString(string className) { List 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 virtual async Task InSingleAsync(object pkValue) { Check.Exception(this.QueryBuilder.SelectValue.HasValue(), "'InSingle' and' Select' can't be used together,You can use .Select(it=>...).Single(it.id==1)"); var list =await In(pkValue).ToListAsync(); if (list == null) return default(T); else return list.SingleOrDefault(); } public async Task SingleAsync() { 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 =await this.ToListAsync(); 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 async Task SingleAsync(Expression> expression) { _Where(expression); var result =await SingleAsync(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public async Task FirstAsync() { if (QueryBuilder.OrderByValue.IsNullOrEmpty()) { QueryBuilder.OrderByValue = QueryBuilder.DefaultOrderByTemplate; } if (QueryBuilder.Skip.HasValue) { QueryBuilder.Take = 1; var list = await this.ToListAsync(); return list.FirstOrDefault(); } else { QueryBuilder.Skip = 0; QueryBuilder.Take = 1; var result =await this.ToListAsync(); if (result.HasValue()) return result.FirstOrDefault(); else return default(T); } } public async Task FirstAsync(Expression> expression) { _Where(expression); var result = await FirstAsync(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public async Task AnyAsync(Expression> expression) { _Where(expression); var result =await AnyAsync(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public async Task AnyAsync() { return await this.CountAsync() > 0; } public async Task CountAsync() { MappingTableList expMapping; int result; _CountBegin(out expMapping, out result); if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return GetCount(); }, CacheTime, this.Context); } else { result =await GetCountAsync(); } _CountEnd(expMapping); return result; } public async Task CountAsync(Expression> expression) { _Where(expression); var result =await CountAsync(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public async Task MaxAsync(string maxField) { this.Select(string.Format(QueryBuilder.MaxTemplate, maxField)); var list = await this._ToListAsync(); var result =list.SingleOrDefault(); return result; } public Task MaxAsync(Expression> expression) { return _MaxAsync(expression); } public async Task MinAsync(string minField) { this.Select(string.Format(QueryBuilder.MinTemplate, minField)); var list = await this._ToListAsync(); var result = list.SingleOrDefault(); return result; } public Task MinAsync(Expression> expression) { return _MinAsync(expression); } public async Task SumAsync(string sumField) { this.Select(string.Format(QueryBuilder.SumTemplate, sumField)); var list = await this._ToListAsync(); var result = list.SingleOrDefault(); return result; } public Task SumAsync(Expression> expression) { return _SumAsync(expression); } public async Task AvgAsync(string avgField) { this.Select(string.Format(QueryBuilder.AvgTemplate, avgField)); var list = await this._ToListAsync(); var result = list.SingleOrDefault(); return result; } public Task AvgAsync(Expression> expression) { return _AvgAsync(expression); } public Task> ToListAsync() { InitMapping(); return _ToListAsync(); } public Task> ToPageListAsync(int pageIndex, int pageSize) { pageIndex = _PageList(pageIndex, pageSize); return ToListAsync(); } public async Task> ToPageListAsync(int pageIndex, int pageSize, RefAsync totalNumber) { totalNumber.Value = await this.Clone().CountAsync(); return await this.Clone().ToPageListAsync(pageIndex, pageSize); } public async Task ToJsonAsync() { if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; var result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Context.Utilities.SerializeObject(this.ToList(), typeof(T)); }, CacheTime, this.Context); return result; } else { return this.Context.Utilities.SerializeObject(await this.ToListAsync(), typeof(T)); } } public async Task ToJsonPageAsync(int pageIndex, int pageSize) { return this.Context.Utilities.SerializeObject(await this.ToPageListAsync(pageIndex, pageSize), typeof(T)); } public async Task ToJsonPageAsync(int pageIndex, int pageSize, RefAsync totalNumber) { totalNumber.Value = await this.Clone().CountAsync(); return await this.Clone().ToJsonPageAsync(pageIndex, pageSize); } public async Task ToDataTableAsync() { InitMapping(); var sqlObj = this.ToSql(); RestoreMapping(); DataTable result = null; if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); }, CacheTime, this.Context); } else { result = await this.Db.GetDataTableAsync(sqlObj.Key, sqlObj.Value.ToArray()); } return result; } public Task ToDataTablePageAsync(int pageIndex, int pageSize) { pageIndex = _PageList(pageIndex, pageSize); return ToDataTableAsync(); } public async Task ToDataTablePageAsync(int pageIndex, int pageSize, RefAsync totalNumber) { totalNumber.Value = await this.Clone().CountAsync(); return await this.Clone().ToDataTablePageAsync(pageIndex, pageSize); } #endregion #region Private Methods private void _CountEnd(MappingTableList expMapping) { RestoreMapping(); QueryBuilder.IsCount = false; if (expMapping.Count > 0) { if (this.QueryableMappingTableList == null) { this.QueryableMappingTableList = new MappingTableList(); } this.QueryableMappingTableList.Add(expMapping.First()); } } private void _CountBegin(out MappingTableList expMapping, out int result) { expMapping = new MappingTableList(); if (QueryBuilder.EntityName == "ExpandoObject" && this.Context.MappingTables.Any(it => it.EntityName == "ExpandoObject")) { expMapping.Add("ExpandoObject", this.Context.MappingTables.First(it => it.EntityName == "ExpandoObject").DbTableName); } InitMapping(); QueryBuilder.IsCount = true; result = 0; } protected ISugarQueryable _Select(Expression expression) { QueryBuilder.CheckExpression(expression, "Select"); this.Context.InitMappingInfo(typeof(TResult)); 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) { QueryBuilder.CheckExpression(expression, "Where"); 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) { QueryBuilder.CheckExpression(expression, "OrderBy"); var isSingle = QueryBuilder.IsSingle(); if ((expression as LambdaExpression).Body is NewExpression) { var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple); var items = lamResult.GetResultString().Split(',').Where(it => it.HasValue()).Select(it => it + UtilConstants.Space + type.ToString().ToUpper()).ToList(); OrderBy(string.Join(",", items)); return this; } else { var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); OrderBy(lamResult.GetResultString() + UtilConstants.Space + type.ToString().ToUpper()); return this; } } private int _PageList(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 pageIndex; } protected ISugarQueryable _GroupBy(Expression expression) { QueryBuilder.CheckExpression(expression, "GroupBy"); LambdaExpression 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) { QueryBuilder.CheckExpression(expression, "Main"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var result = Min(lamResult.GetResultString()); QueryBuilder.SelectValue = null; return result; } protected async Task _MinAsync(Expression expression) { QueryBuilder.CheckExpression(expression, "Main"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var result = await MinAsync(lamResult.GetResultString()); QueryBuilder.SelectValue = null; return result; } protected TResult _Avg(Expression expression) { QueryBuilder.CheckExpression(expression, "Avg"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Avg(lamResult.GetResultString()); } protected async Task _AvgAsync(Expression expression) { QueryBuilder.CheckExpression(expression, "Avg"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return await AvgAsync(lamResult.GetResultString()); } protected TResult _Max(Expression expression) { QueryBuilder.CheckExpression(expression, "Max"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var reslut = Max(lamResult.GetResultString()); QueryBuilder.SelectValue = null; return reslut; } protected async Task _MaxAsync(Expression expression) { QueryBuilder.CheckExpression(expression, "Max"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var reslut =await MaxAsync(lamResult.GetResultString()); QueryBuilder.SelectValue = null; return reslut; } protected TResult _Sum(Expression expression) { QueryBuilder.CheckExpression(expression, "Sum"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var reslut = Sum(lamResult.GetResultString()); QueryBuilder.SelectValue = null; return reslut; } protected async Task _SumAsync(Expression expression) { QueryBuilder.CheckExpression(expression, "Sum"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var reslut =await SumAsync(lamResult.GetResultString()); QueryBuilder.SelectValue = null; return reslut; } protected ISugarQueryable _As(string tableName, string entityName) { IsAs = true; OldMappingTableList = this.Context.MappingTables; this.Context.MappingTables = this.Context.Utilities.TranslateCopy(this.Context.MappingTables); if (this.Context.MappingTables.Any(it => it.EntityName == entityName)) { this.Context.MappingTables.Add(this.Context.MappingTables.First(it => it.EntityName == entityName).DbTableName, tableName); } 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 + UtilConstants.Space, filterResult.Parameters); } } } public ISugarQueryable _PartitionBy(Expression expression) { QueryBuilder.CheckExpression(expression, "PartitionBy"); LambdaExpression 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) { QueryBuilder.CheckExpression(expression, "Having"); 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(); _Mapper(result); return result; } protected async Task> _ToListAsync() { 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 =await GetDataAsync(sqlObj); } RestoreMapping(); _Mapper(result); return result; } protected void _Mapper(List result) { if (this.EntityInfo.Columns.Any(it => it.IsTranscoding)) { foreach (var item in result) { foreach (var column in this.EntityInfo.Columns.Where(it => it.IsTranscoding)) { var value = column.PropertyInfo.GetValue(item, null); if (value != null) { column.PropertyInfo.SetValue(item, UtilMethods.DecodeBase64(value.ToString()), null); } } } } if (this.Mappers.HasValue()) { foreach (var mapper in this.Mappers) { if (typeof(TResult) == typeof(T)) { mapper(result.Select(it => (T)Convert.ChangeType(it, typeof(T))).ToList()); } else { Check.Exception(true, "{0} and {1} are not a type, Try .select().mapper().ToList", typeof(TResult).FullName, typeof(T).FullName); } } } if (this.MapperAction != null) { foreach (TResult item in result) { if (typeof(TResult) == typeof(T)) { this.MapperAction((T)(item as object)); } else { Check.Exception(true, "{0} and {1} are not a type, Try .select().mapper().ToList", typeof(TResult).FullName, typeof(T).FullName); } } } if (this.MapperActionWithCache != null) { if (typeof(TResult) == typeof(T)) { var list = (List)Convert.ChangeType(result, typeof(List)); var mapperCache = new MapperCache(list, this.Context); foreach (T item in list) { mapperCache.GetIndex = 0; this.MapperActionWithCache(item, mapperCache); } } else { Check.Exception(true, "{0} and {1} are not a type, Try .select().mapper().ToList", typeof(TResult).FullName, typeof(T).FullName); } } } private ISugarQueryable _Mapper(Expression mapperObject, Expression mapperField) { if ((mapperObject as LambdaExpression).Body is UnaryExpression) { mapperObject = ((mapperObject as LambdaExpression).Body as UnaryExpression).Operand; } else { mapperObject = (mapperObject as LambdaExpression).Body; } if ((mapperField as LambdaExpression).Body is UnaryExpression) { mapperField = ((mapperField as LambdaExpression).Body as UnaryExpression).Operand; } else { mapperField = (mapperField as LambdaExpression).Body; } Check.Exception(mapperObject is MemberExpression == false || mapperField is MemberExpression == false, ".Mapper() parameter error"); var mapperObjectExp = mapperObject as MemberExpression; var mapperFieldExp = mapperField as MemberExpression; Check.Exception(mapperFieldExp.Type.IsClass(), ".Mapper() parameter error"); var objType = mapperObjectExp.Type; var filedType = mapperFieldExp.Expression.Type; Check.Exception(objType != typeof(TObject) && objType != typeof(List), ".Mapper() parameter error"); if (objType == typeof(List)) { objType = typeof(TObject); } var filedName = mapperFieldExp.Member.Name; var objName = mapperObjectExp.Member.Name; var filedEntity = this.Context.EntityMaintenance.GetEntityInfo(objType); var objEntity = this.Context.EntityMaintenance.GetEntityInfo(filedType); var isSelf = filedType == typeof(T); if (Mappers == null) Mappers = new List>>(); if (isSelf) { Action> mapper = (entitys) => { if (entitys.IsNullOrEmpty() || !entitys.Any()) return; var entity = entitys.First(); var whereCol = filedEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(filedName, StringComparison.CurrentCultureIgnoreCase)); if (whereCol == null) { whereCol = filedEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); } if (whereCol == null) { whereCol = filedEntity.Columns.FirstOrDefault(it => GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase))); } if (whereCol == null) { whereCol = filedEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals("id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { whereCol = filedEntity.Columns.FirstOrDefault(it => (it.PropertyName).Equals(it.EntityName + "id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { Check.Exception(true, ".Mapper() parameter error"); } List inValues = entitys.Select(it => it.GetType().GetProperty(filedName).GetValue(it, null).ObjToString()).ToList(); List wheres = new List() { new ConditionalModel() { FieldName=whereCol.DbColumnName, ConditionalType= ConditionalType.In, FieldValue=string.Join(",",inValues.Distinct()) } }; var list = this.Context.Queryable().Where(wheres).ToList(); foreach (var item in entitys) { var whereValue = item.GetType().GetProperty(filedName).GetValue(item, null); var setValue = list.Where(x => x.GetType().GetProperty(whereCol.PropertyName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); var setObject = item.GetType().GetProperty(objName); if (setObject.PropertyType.FullName.IsCollectionsList()) { setObject.SetValue(item, setValue.ToList(), null); } else { setObject.SetValue(item, setValue.FirstOrDefault(), null); } } }; Mappers.Add(mapper); } else { Action> mapper = (entitys) => { if (entitys.IsNullOrEmpty() || !entitys.Any()) return; var entity = entitys.First(); var tEntity = this.Context.EntityMaintenance.GetEntityInfo(); var whereCol = tEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(filedName, StringComparison.CurrentCultureIgnoreCase)); if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); } if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase))); } if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals("id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => (it.PropertyName).Equals(it.EntityName + "id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { Check.Exception(true, ".Mapper() parameter error"); } List inValues = entitys.Select(it => it.GetType().GetProperty(whereCol.PropertyName).GetValue(it, null).ObjToString()).ToList(); var dbColumnName = filedEntity.Columns.FirstOrDefault(it => it.PropertyName == filedName).DbColumnName; List wheres = new List() { new ConditionalModel() { FieldName=dbColumnName, ConditionalType= ConditionalType.In, FieldValue=string.Join(",",inValues) } }; var list = this.Context.Queryable().Where(wheres).ToList(); foreach (var item in entitys) { var whereValue = item.GetType().GetProperty(whereCol.PropertyName).GetValue(item, null); var setValue = list.Where(x => x.GetType().GetProperty(filedName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); var setObject = item.GetType().GetProperty(objName); if (setObject.PropertyType.FullName.IsCollectionsList()) { setObject.SetValue(item, setValue.ToList(), null); } else { setObject.SetValue(item, setValue.FirstOrDefault(), null); } } }; Mappers.Add(mapper); } return this; } private ISugarQueryable _Mapper(Expression mapperObject, Expression mainField, Expression childField) { if ((mapperObject as LambdaExpression).Body is UnaryExpression) { mapperObject = ((mapperObject as LambdaExpression).Body as UnaryExpression).Operand; } else { mapperObject = (mapperObject as LambdaExpression).Body; } if ((mainField as LambdaExpression).Body is UnaryExpression) { mainField = ((mainField as LambdaExpression).Body as UnaryExpression).Operand; } else { mainField = (mainField as LambdaExpression).Body; } if ((childField as LambdaExpression).Body is UnaryExpression) { childField = ((childField as LambdaExpression).Body as UnaryExpression).Operand; } else { childField = (childField as LambdaExpression).Body; } Check.Exception(mapperObject is MemberExpression == false || mainField is MemberExpression == false, ".Mapper() parameter error"); var mapperObjectExp = mapperObject as MemberExpression; var mainFieldExp = mainField as MemberExpression; var childFieldExp = childField as MemberExpression; Check.Exception(mainFieldExp.Type.IsClass(), ".Mapper() parameter error"); Check.Exception(childFieldExp.Type.IsClass(), ".Mapper() parameter error"); var objType = mapperObjectExp.Type; var filedType = mainFieldExp.Expression.Type; Check.Exception(objType != typeof(TObject) && objType != typeof(List), ".Mapper() parameter error"); if (objType == typeof(List)) { objType = typeof(TObject); } var mainFiledName = mainFieldExp.Member.Name; var childFiledName = childFieldExp.Member.Name; var objName = mapperObjectExp.Member.Name; var filedEntity = this.Context.EntityMaintenance.GetEntityInfo(objType); var objEntity = this.Context.EntityMaintenance.GetEntityInfo(filedType); var isSelf = filedType == typeof(T); if (Mappers == null) Mappers = new List>>(); if (isSelf) { Action> mapper = (entitys) => { if (entitys.IsNullOrEmpty() || !entitys.Any()) return; var entity = entitys.First(); var whereCol = filedEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(childFiledName, StringComparison.CurrentCultureIgnoreCase)); if (whereCol == null) { whereCol = filedEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); } if (whereCol == null) { whereCol = filedEntity.Columns.FirstOrDefault(it => GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase))); } if (whereCol == null) { whereCol = filedEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals("id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { whereCol = filedEntity.Columns.FirstOrDefault(it => (it.PropertyName).Equals(it.EntityName + "id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { Check.Exception(true, ".Mapper() parameter error"); } List inValues = entitys.Select(it => it.GetType().GetProperty(mainFiledName).GetValue(it, null).ObjToString()).ToList(); List wheres = new List() { new ConditionalModel() { FieldName=whereCol.DbColumnName, ConditionalType= ConditionalType.In, FieldValue=string.Join(",",inValues.Distinct()) } }; var list = this.Context.Queryable().Where(wheres).ToList(); foreach (var item in entitys) { var whereValue = item.GetType().GetProperty(mainFiledName).GetValue(item, null); var setValue = list.Where(x => x.GetType().GetProperty(whereCol.PropertyName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); var setObject = item.GetType().GetProperty(objName); if (setObject.PropertyType.FullName.IsCollectionsList()) { setObject.SetValue(item, setValue.ToList(), null); } else { setObject.SetValue(item, setValue.FirstOrDefault(), null); } } }; Mappers.Add(mapper); } else { Action> mapper = (entitys) => { if (entitys.IsNullOrEmpty() || !entitys.Any()) return; var entity = entitys.First(); var tEntity = this.Context.EntityMaintenance.GetEntityInfo(); var whereCol = tEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(childFiledName, StringComparison.CurrentCultureIgnoreCase)); if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); } if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase))); } if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals("id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => (it.PropertyName).Equals(it.EntityName + "id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { Check.Exception(true, ".Mapper() parameter error"); } List inValues = entitys.Select(it => it.GetType().GetProperty(whereCol.PropertyName).GetValue(it, null).ObjToString()).ToList(); var dbColumnName = filedEntity.Columns.FirstOrDefault(it => it.PropertyName == mainFiledName).DbColumnName; List wheres = new List() { new ConditionalModel() { FieldName=dbColumnName, ConditionalType= ConditionalType.In, FieldValue=string.Join(",",inValues) } }; var list = this.Context.Queryable().Where(wheres).ToList(); foreach (var item in entitys) { var whereValue = item.GetType().GetProperty(whereCol.PropertyName).GetValue(item, null); var setValue = list.Where(x => x.GetType().GetProperty(mainFiledName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); var setObject = item.GetType().GetProperty(objName); if (setObject.PropertyType.FullName.IsCollectionsList()) { setObject.SetValue(item, setValue.ToList(), null); } else { setObject.SetValue(item, setValue.FirstOrDefault(), null); } } }; Mappers.Add(mapper); } return this; } 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; } protected async Task GetCountAsync() { var sql = string.Empty; ToSqlBefore(); sql = QueryBuilder.ToSqlString(); sql = QueryBuilder.ToCountSql(sql); var result =Convert.ToInt32(await Context.Ado.GetScalarAsync(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()); result = GetData(isComplexModel, entityType, dataReader); return result; } protected async Task> GetDataAsync(KeyValuePair> sqlObj) { List result; var isComplexModel = QueryBuilder.IsComplexModel(sqlObj.Key); var entityType = typeof(TResult); var dataReader = await this.Db.GetDataReaderAsync(sqlObj.Key, sqlObj.Value.ToArray()); result =await GetDataAsync(isComplexModel, entityType, dataReader); return result; } private List GetData(bool isComplexModel, Type entityType, IDataReader dataReader) { List result; 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 if (entityType.IsAnonymousType() || isComplexModel) { result = this.Context.Utilities.DataReaderToList(dataReader); } else { result = this.Bind.DataReaderToList(entityType, dataReader); } SetContextModel(result, entityType); return result; } private async Task> GetDataAsync(bool isComplexModel, Type entityType, IDataReader dataReader) { List result; if (entityType == UtilConstants.DynamicType) { result =await this.Context.Utilities.DataReaderToExpandoObjectListAsync(dataReader) as List; } else if (entityType == UtilConstants.ObjType) { var expObj = await this.Context.Utilities.DataReaderToExpandoObjectListAsync(dataReader); result = expObj.Select(it => ((TResult)(object)it)).ToList(); } else if (entityType.IsAnonymousType() || isComplexModel) { result =await this.Context.Utilities.DataReaderToListAsync(dataReader); } else { result =await this.Bind.DataReaderToListAsync(entityType, dataReader); } SetContextModel(result, entityType); return result; } protected void _InQueryable(Expression expression, KeyValuePair> sqlObj) { QueryBuilder.CheckExpression(expression, "In"); string 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 (UtilMethods.GetRootBaseType(entityType).HasValue() && UtilMethods.GetRootBaseType(entityType) == UtilConstants.ModelType) { foreach (var item in result) { var contextProperty = item.GetType().GetProperty("Context"); SqlSugarProvider newClient = this.Context.Utilities.CopyContext(); newClient.Ado.IsDisableMasterSlaveSeparation = true; if (newClient.CurrentConnectionConfig.AopEvents == null) newClient.CurrentConnectionConfig.AopEvents = new AopEvents(); contextProperty.SetValue(item, newClient, null); } } } } protected void CopyQueryBuilder(QueryBuilder asyncQueryableBuilder) { var pars = new List(); pars.AddRange(this.QueryBuilder.Parameters); asyncQueryableBuilder.Take = this.QueryBuilder.Take; asyncQueryableBuilder.Skip = this.QueryBuilder.Skip; asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue; asyncQueryableBuilder.WhereInfos = this.Context.Utilities.TranslateCopy(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 = pars; asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName; asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString; asyncQueryableBuilder.GroupByValue = this.QueryBuilder.GroupByValue; asyncQueryableBuilder.IsDistinct = this.QueryBuilder.IsDistinct; asyncQueryableBuilder.OrderByValue = this.QueryBuilder.OrderByValue; asyncQueryableBuilder.IsDisabledGobalFilter = this.QueryBuilder.IsDisabledGobalFilter; asyncQueryableBuilder.PartitionByValue = this.QueryBuilder.PartitionByValue; asyncQueryableBuilder.JoinExpression = this.QueryBuilder.JoinExpression; asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex; asyncQueryableBuilder.HavingInfos = this.QueryBuilder.HavingInfos; asyncQueryableBuilder.LambdaExpressions.ParameterIndex = this.QueryBuilder.LambdaExpressions.ParameterIndex; asyncQueryableBuilder.IgnoreColumns = this.QueryBuilder.IgnoreColumns; } protected int SetCacheTime(int cacheDurationInSeconds) { if (cacheDurationInSeconds == int.MaxValue && this.Context.CurrentConnectionConfig.MoreSettings != null && this.Context.CurrentConnectionConfig.MoreSettings.DefaultCacheDurationInSeconds > 0) { cacheDurationInSeconds = this.Context.CurrentConnectionConfig.MoreSettings.DefaultCacheDurationInSeconds; } return cacheDurationInSeconds; } #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; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(ClassType whereClass, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClass, ignoreDefaultValue); return this; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(List whereClassTypes, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClassTypes, ignoreDefaultValue); return this; } #endregion #region Select public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region Order public new ISugarQueryable OrderBy(string orderFileds) { base.OrderBy(orderFileds); 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) { QueryBuilder.CheckExpression(expression, "In"); 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) { QueryBuilder.CheckExpression(expression, "In"); 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; } public ISugarQueryable In(Expression> expression, params FieldType[] inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, List inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable Clone() { var queryable = this.Context.Queryable((t, t2) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (isCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public bool Any(Expression> expression) { _Where(expression); var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public new ISugarQueryable Distinct() { QueryBuilder.IsDistinct = true; 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; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(ClassType whereClass, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClass, ignoreDefaultValue); return this; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(List whereClassTypes, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClassTypes, ignoreDefaultValue); 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) { QueryBuilder.CheckExpression(expression, "In"); 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) { QueryBuilder.CheckExpression(expression, "In"); 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; } public ISugarQueryable In(Expression> expression, params FieldType[] inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, List inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } public ISugarQueryable In(Expression> expression, params FieldType[] inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, List inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable Clone() { var queryable = this.Context.Queryable((t, t2, t3) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public bool Any(Expression> expression) { _Where(expression); var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public new ISugarQueryable Distinct() { QueryBuilder.IsDistinct = true; 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; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(ClassType whereClass, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClass, ignoreDefaultValue); return this; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(List whereClassTypes, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClassTypes, ignoreDefaultValue); 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) { QueryBuilder.CheckExpression(expression, "In"); 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) { QueryBuilder.CheckExpression(expression, "In"); 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; } public ISugarQueryable In(Expression> expression, params FieldType[] inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, List inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } public ISugarQueryable In(Expression> expression, params FieldType[] inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, List inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } public ISugarQueryable In(Expression> expression, params FieldType[] inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, List inValues) { QueryBuilder.CheckExpression(expression, "In"); var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } public ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; } #endregion #region Other public new ISugarQueryable Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public bool Any(Expression> expression) { _Where(expression); var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public new ISugarQueryable Distinct() { QueryBuilder.IsDistinct = true; 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; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(ClassType whereClass, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClass, ignoreDefaultValue); return this; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(List whereClassTypes, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClassTypes, ignoreDefaultValue); 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 Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public bool Any(Expression> expression) { _Where(expression); var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public new ISugarQueryable Distinct() { QueryBuilder.IsDistinct = true; 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; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(ClassType whereClass, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClass, ignoreDefaultValue); return this; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(List whereClassTypes, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClassTypes, ignoreDefaultValue); 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; } 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; } 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; } 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 Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public bool Any(Expression> expression) { _Where(expression); var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public new ISugarQueryable Distinct() { QueryBuilder.IsDistinct = true; 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; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(ClassType whereClass, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClass, ignoreDefaultValue); return this; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(List whereClassTypes, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClassTypes, ignoreDefaultValue); 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; } 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; } 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 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 Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public bool Any(Expression> expression) { _Where(expression); var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public new ISugarQueryable Distinct() { QueryBuilder.IsDistinct = true; 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; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(ClassType whereClass, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClass, ignoreDefaultValue); return this; } /// /// if a property that is not empty is a condition /// /// /// public new ISugarQueryable WhereClass(List whereClassTypes, bool ignoreDefaultValue = false) where ClassType : class, new() { base.WhereClass(whereClassTypes, ignoreDefaultValue); 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; } 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; } 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; } 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 Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } public bool Any(Expression> expression) { _Where(expression); var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } public new ISugarQueryable Distinct() { QueryBuilder.IsDistinct = true; 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 Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8, t9) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); 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 Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8, t9, t10) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); 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 Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8, t9, t10, t11) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); 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 Clone() { var queryable = this.Context.Queryable((t, t2, t3, t4, t5, T6, t7, t8, t9, t10, t11, t12) => new object[] { }).WithCacheIF(IsCache, CacheTime); base.CopyQueryBuilder(queryable.QueryBuilder); return queryable; } 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) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); this.IsCache = true; this.CacheTime = cacheDurationInSeconds; return this; } public new ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); if (IsCache) { this.IsCache = true; this.CacheTime = cacheDurationInSeconds; } return this; } #endregion } #endregion }