/// <summary> /// 获取数量 /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="connection"></param> /// <param name="tableName"></param> /// <param name="whereExpress">条件表达式</param> /// <param name="outSqlAction">返回sql语句</param> /// <returns></returns> public static async Task <int> CountAsync <TEntity>(this IDbConnection connection, string tableName, Expression <Func <TEntity, bool> > whereExpress, Action <string> outSqlAction = null) where TEntity : class, new() { if (string.IsNullOrEmpty(tableName)) { throw new ArgumentNullException(nameof(tableName)); } var dbType = connection.GetDbType(); var sqlExpression = SqlExpression.Count <TEntity>(dbType, tableName: tableName).Where(whereExpress); var task = await connection.QueryFirstOrDefaultAsync <int>(sqlExpression.Script, sqlExpression.DbParams); // 返回sql outSqlAction?.Invoke(sqlExpression.Script); return(task); }