using FreeSql.Internal.Model; using System; using System.Collections.Generic; using System.Data; using System.Linq.Expressions; using System.Threading.Tasks; namespace FreeSql { public interface ISelect : ISelect0, T1> where T1 : class where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class { #if net40 #else Task AnyAsync(Expression> exp); Task ToDataTableAsync(Expression> select); Task> ToListAsync(Expression> select); Task> ToListAsync(); Task ToOneAsync(Expression> select); Task FirstAsync(Expression> select); Task FirstAsync(); Task ToAggregateAsync(Expression, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, TReturn>> select); Task SumAsync(Expression> column); Task MinAsync(Expression> column); Task MaxAsync(Expression> column); Task AvgAsync(Expression> column); #endif bool Any(Expression> exp); DataTable ToDataTable(Expression> select); List ToList(Expression> select); List ToList(); TReturn ToOne(Expression> select); TReturn First(Expression> select); TDto First(); string ToSql(Expression> select, FieldAliasOptions fieldAlias = FieldAliasOptions.AsIndex); TReturn ToAggregate(Expression, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, ISelectGroupingAggregate, TReturn>> select); decimal Sum(Expression> column); TMember Min(Expression> column); TMember Max(Expression> column); double Avg(Expression> column); ISelect LeftJoin(Expression> exp); ISelect InnerJoin(Expression> exp); ISelect RightJoin(Expression> exp); ISelect Where(Expression> exp); ISelect WhereIf(bool condition, Expression> exp); ISelectGrouping> GroupBy(Expression> exp); ISelect OrderBy(Expression> column); ISelect OrderByDescending(Expression> column); } }