public int Count <T>(IDbConnection connection, Expression <Func <T, bool> > exp, IDbTransaction transaction, int?commandTimeout) where T : class { string str = SqlExpession.Where <T>(exp); string sql = string.Format("select count(1) from {0} where {1}", typeof(T).Name, str); return(connection.Query <int>(sql, null, transaction, false, commandTimeout, CommandType.Text).Single()); }
public IEnumerable <T> Where <T>(IDbConnection connection, Expression <Func <T, bool> > exp, string orderBy, IDbTransaction trans, int?timeout, bool buffered) where T : class { string str = SqlExpession.Where <T>(exp); if (string.IsNullOrWhiteSpace(orderBy)) { IClassMapper classMap = SqlGenerator.Configuration.GetMap <T>(); orderBy = SqlGenerator.GetOrderBy(classMap); } return(connection.Query <T>(string.Format("select * from {0} where {1} order by {2}", typeof(T).Name, str, orderBy), null, trans, buffered, timeout)); }
public IEnumerable <T> Where <T>(IDbConnection connection, Expression <Func <T, bool> > exp, string orderBy, int pageIndex, int pageSize, IDbTransaction trans, int?timeout, bool buffered) where T : class { StringBuilder sb = new StringBuilder(); sb.Append("WITH Data_DataSet AS"); sb.Append("(SELECT ROW_NUMBER() OVER (ORDER BY " + orderBy + ") AS Row, * FROM ("); string str = SqlExpession.Where <T>(exp); sb.Append(string.Format("select * from {0} where {1}", typeof(T).Name, str)); sb.Append(")aa)"); sb.Append("SELECT * FROM Data_DataSet"); sb.Append(string.Format(" WHERE Row between ({0}*{1}+1) and ({1}*({0}+1))", pageIndex, pageSize)); return(connection.Query <T>(sb.ToString(), null, trans, buffered, timeout)); }