using System; using System.Collections.Generic; using System.Text; namespace SqlSugar { public partial class QueryableProvider : QueryableAccessory, ISugarQueryable { public ISugarQueryable AddJoinInfo(string tableName, string shortName, IFuncModel models, JoinType type = JoinType.Left) { var sqlobj = this.SqlBuilder.FuncModelToSql(models); this.QueryBuilder.Parameters.AddRange(sqlobj.Value); return this.AddJoinInfo(tableName, shortName, sqlobj.Key, type); } public ISugarQueryable AddJoinInfo(List joinInfoParameters) { if (joinInfoParameters != null) { foreach (var item in joinInfoParameters) { this.AddJoinInfo(item.TableName,item.ShortName,item.Models,item.Type); } } return this; } public ISugarQueryable AS(string tableName, string shortName) { return this.AS($"{this.SqlBuilder.GetTranslationTableName(tableName)} {shortName}"); } public ISugarQueryable OrderBy(List models) { if (models == null || models.Count == 0) { return this; } var orderObj = this.SqlBuilder.OrderByModelToSql(models); this.OrderBy(orderObj.Key); this.QueryBuilder.Parameters.AddRange(orderObj.Value); return this; } public ISugarQueryable GroupBy(List models) { if (models == null || models.Count == 0) { return this; } var orderObj = this.SqlBuilder.GroupByModelToSql(models); this.GroupBy(orderObj.Key); this.QueryBuilder.Parameters.AddRange(orderObj.Value); return this; } public ISugarQueryable Select(List models) { var orderObj = this.SqlBuilder.SelectModelToSql(models); this.Select(orderObj.Key); this.QueryBuilder.Parameters.AddRange(orderObj.Value); return this; } public ISugarQueryable Select(List models) { var orderObj = this.SqlBuilder.SelectModelToSql(models); var result=this.Select(orderObj.Key); result.QueryBuilder.Parameters.AddRange(orderObj.Value); return result; } public ISugarQueryable Select(List models, AsNameFormatType type) { if (type == AsNameFormatType.NoConvert) { foreach (var model in models) { if (!string.IsNullOrEmpty(model.AsName)) { model.AsName = (UtilConstants.ReplaceKey + SqlBuilder.SqlTranslationLeft + model.AsName + SqlBuilder.SqlTranslationRight); model.AsName.ToCheckField(); } } } return Select(models); } public ISugarQueryable Having(IFuncModel model) { var orderObj = this.SqlBuilder.FuncModelToSql(model); this.Having(orderObj.Key); this.QueryBuilder.Parameters.AddRange(orderObj.Value); return this; } } }