一个DataTable,想把1~10,11~20,21~30 行拆成3个新的DataTable,除了循环遍历之外,有更好的方法么?
DataTable dt = new DataTable();//你的原始table
int pagenumber = 10;//分页的间隔
int pagesize = 1;//取分隔开来的第几个区块
var row = dt.Rows.Cast<DataRow>();
var curRows = row.Skip(pagenumber).Take(pagesize).ToArray();//按照间隔区分区块并获取指定区块数据
创建新的table加载取出来的区块数据
DataTable table = new DataTable();
table.Rows.Add(curRows);
多个区块的话要多次创建和抓取
也可以写个循环
DataSet ds = new DataSet();
for(i=1;i<dt.Rows.Count/ pagenumber;i++)
{
var row = dt.Rows.Cast<DataRow>();
var curRows = row.Skip(pagenumber).Take(i).ToArray();//按照间隔区分区块并获取指定区块数据
DataTable table = new DataTable();
table.Rows.Add(curRows);
ds.Tables.Add(table);
}
最后的ds就是分隔开来的datatable的集合。
这个只能处理等量划分,也就是分页的方式。问题中看的是等量划分,10个一组
CopyToDataTable
https://msdn.microsoft.com/zh-cn/library/bb396189
可以后台进行分页查询
http://blog.csdn.net/osmeteor/article/details/9093417
先搞清楚为什么要这么做吧,我感觉楼主就是为了分页。。。
stepLength = 100000;
IEnumerable listLoop = result.Rows.OfType().Skip(startIndex).Take(stepLength);
DataTable tempTable = listLoop.CopyToDataTable();
谢谢各位,这样就实现我问的了,非常感谢大家!