using System; using System.Collections.Generic; using System.Linq.Expressions; namespace FreeSql.Internal.CommonProvider { abstract class Select3Provider : Select0Provider, T1>, ISelect where T1 : class where T2 : class where T3 : class { public Select3Provider(IFreeSql orm, CommonUtils commonUtils, CommonExpression commonExpression, object dywhere) : base(orm, commonUtils, commonExpression, dywhere) { if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure(typeof(T2), typeof(T3)); } TMember ISelect.Avg(Expression> column) => this.InternalAvg(column?.Body); ISelectGrouping ISelect.GroupBy(Expression> exp) => this.InternalGroupBy(exp?.Body); TMember ISelect.Max(Expression> column) => this.InternalMax(column?.Body); TMember ISelect.Min(Expression> column) => this.InternalMin(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); List ISelect.ToList(Expression> select) => this.InternalToList(select?.Body); TReturn ISelect.ToAggregate(Expression, ISelectGroupingAggregate, ISelectGroupingAggregate, TReturn>> select) => this.InternalToAggregate(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; } }