sql数据排序问题
数据库表:
id name state
1 n1 成功
2 n2 失败
3 n3 成功
4 n4 其它
5 n5 失败
6 n6 成功
7 n7 成功
8 n8 其它
9 n9 其它
-------------------
这个表的数据按查询条件查出来有50万条,通过sql查询后放入IDataReader,在while (dr.Read())内进行筛选分页
int pageIndex=1;//当前页
int pageSize=5;//每页读取数量
public List<Entity> test()
{
List<Entity> list=new List<Entity>();
using (IDataReader dr = this._helper.ExecuteReader(CommandType.Text, sqlStr, whereParamCollection))
{
int n = 0;
while (dr.Read())
{
n++;
if (n <= pageIndex * pageSize)
{
continue;
}
else
if (n > (pageIndex + 1) * pageSize)
{
break;
}
list.Add(Populate_Entity_FromDr(dr));//将当前的数据转换成实体放入List<Entity>中
}
if (!dr.IsClosed)
dr.Close();
}
return list;
}
现在的问题是:
test方法返回List<Entity>数据顺序做调整。
1、将state等于成功的数据分成两半,假设state="成功" 的共有10页,前5页的数据放到整个分页的最前5页,后5页的数据放到整个分页的最后5页。
2、将state="失败" 的记录放到整个分页的中间
3、将state="其它" 10%的记录修改为state="其它1",其它的90%修改为state="其它2",这两个比例的记录放到整个分页的中间
以前的调整不会修改数据库里面的数据,只是在页面上显示时调整数据的分布。
在此先谢谢!
------解决方案--------------------
那你还是自己写个方法,将数据重新组织一下吧,比如你查询时,按照state方法排序,如果true的都在前面,那么你遍历一下,把后50个加到最后
------解决方案--------------------
这么麻烦,建议你借助临时表按照你的逻辑存储,调用简单的分页存储过程即可。