日期:2014-05-18  浏览次数:20414 次

如何分批取datatable中的记录
比如datatable中有一千条记录,我想每次取一百条如何取?
(没有索引值的)

------解决方案--------------------
一个比较笨的方法....新建一个datatable tb1,然后在原先的datatable中排好序,分批将值赋予tb1
------解决方案--------------------
不知道楼主说的DataTable是否是内存中的DataTable?
如果是的话,可以用一个变量保存每次取到的行索引,然后再去行索引+100
------解决方案--------------------
uint rowCount = 0;
for(int i = rowCount;i <rowCount + 99;i++)
{
// 做你想做的

rowCount+=100;
}
------解决方案--------------------
与分页差不多,楼主参考一下:

//pageIndex: 页号
//pageSize: 每页显示的记录数
private DataTable GetData(DataTable dt, int pageIndex, int pageSize)
{
//结果
DataTable result = new DataTable();

int recordCount = dt.Rows.Count;
int pageCount = recordCount % pageSize == 0 ? recordCount / pageSize : recordCount / pageSize + 1;
if (pageIndex > pageCount || pageIndex < 1)
{
throw new Exception( "索引错误 ");
}

//结果表的结构
foreach (DataColumn dc in dt.Columns)
{
DataColumn tempDataColumn = new DataColumn(dc.ColumnName, dc.DataType);
result.Columns.Add(tempDataColumn);
}

//索引开始
int recordStart = (pageIndex - 1) * pageSize;

//添加数据到索引
for (int i = recordStart; i < recordStart + pageSize; i++)
{
DataRow dr = result.NewRow();
for (int j = 0; j < dt.Rows[i].ItemArray.Length; j++)
{
dr[j] = dt.Rows[i].ItemArray[j];
}
result.Rows.Add(dr);
}

return result;
}