using System; using System.Collections.Generic; using System.Data; using System.Linq.Expressions; using System.Threading.Tasks; namespace FreeSql.Internal.CommonProvider { abstract class Select6Provider : Select0Provider, T1>, ISelect where T1 : class where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class { public Select6Provider(IFreeSql orm, CommonUtils commonUtils, CommonExpression commonExpression, object dywhere) : base(orm, commonUtils, commonExpression, dywhere) { if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure(typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6)); } TMember ISelect.Avg(Expression> column) => this.InternalAvg(column?.Body); Task ISelect.AvgAsync(Expression> column) => this.InternalAvgAsync(column?.Body); ISelectGrouping ISelect.GroupBy(Expression> exp) => this.InternalGroupBy(exp?.Body); TMember ISelect.Max(Expression> column) => this.InternalMax(column?.Body); Task ISelect.MaxAsync(Expression> column) => this.InternalMaxAsync(column?.Body); TMember ISelect.Min(Expression> column) => this.InternalMin(column?.Body); Task ISelect.MinAsync(Expression> column) => this.InternalMinAsync(column?.Body); ISelect ISelect.OrderBy(Expression> column) => this.InternalOrderBy(column?.Body); ISelect ISelect.OrderByDescending(Expression> column) => this.InternalOrderByDescending(column?.Body); TMember ISelect.Sum(Expression> column) => this.InternalSum(column?.Body); Task ISelect.SumAsync(Expression> column) => this.InternalSumAsync(column?.Body); TReturn ISelect.ToAggregate(Expression, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, TReturn>> select) => this.InternalToAggregate(select?.Body); Task ISelect.ToAggregateAsync(Expression, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, TReturn>> select) => this.InternalToAggregateAsync(select?.Body); List ISelect.ToList(Expression> select) => this.InternalToList(select?.Body); Task> ISelect.ToListAsync(Expression> select) => this.InternalToListAsync(select?.Body); DataTable ISelect.ToDataTable(Expression> select) => this.InternalToDataTable(select?.Body); Task ISelect.ToDataTableAsync(Expression> select) => this.InternalToDataTableAsync(select?.Body); string ISelect.ToSql(Expression> select) => this.InternalToSql(select?.Body); ISelect ISelect.Where(Expression> exp) => this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null)); ISelect ISelect.WhereIf(bool condition, Expression> exp) => condition ? this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null)) : this; bool ISelect.Any(Expression> exp) => this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null)).Any(); Task ISelect.AnyAsync(Expression> exp) => this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp?.Body, null)).AnyAsync(); } }