C# ado.net 使用 row_number over() 简单的分页示例

时间:2023-03-09 16:05:12
C# ado.net 使用 row_number over()  简单的分页示例
        /// <summary>
/// 获取Paging列表
/// </summary>
public List<HousesAgentEntity> GetPageList(int pageIndex, int pageSize, out int amount, string where)
{
int count = 0; //总页数 string sqlCount = "Select Count(*) From HousesAgent" + where;//根据条件计算总页数 List<HousesAgentEntity> list = new List<HousesAgentEntity>(); #region 组装分页的sql语句 string sql = string.Format(@"Select * From ( Select Row_Number() Over(Order By UserId desc) Rows, * From HousesAgent {0} ) tb Where Rows > @Begin And Rows <= @End", where); SqlParameter[] parameters = {
new SqlParameter("@Begin", (pageIndex-1) * pageSize),
new SqlParameter("@End", pageIndex * pageSize)
}; #endregion try
{ SqlDataReader dr = SqlSimpleHelper.ExecuteReader(SqlSimpleHelper.ConnectionString, CommandType.Text, sql, parameters);
list = DataReaderToList(dr); Object obj = SqlSimpleHelper.ExecuteScalar(SqlSimpleHelper.ConnectionString, CommandType.Text, sqlCount);
if (obj != null)
{
int.TryParse(obj.ToString(), out count);
}
amount = count;
} catch (Exception ex)
{
//记录异常日志
LogHelper.WriteErrorLog(GetErrorMethod("GetPageList"), ex.Message);
amount = 0;
}
return list;
}