2 xuhui9310 XuHui9310 于 2017.09.07 13:53 提问

C#将一个DataTable分成多个DataTable

一个DataTable,想把1~10,11~20,21~30 行拆成3个新的DataTable,除了循环遍历之外,有更好的方法么?

6个回答

li1340089590
li1340089590   2017.09.08 12:00
已采纳
                    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个一组
showbo
showbo   Ds   Rxr 2017.09.07 14:24
showbo
showbo 回复寻找清扬_: 连接里面又示例,用linq选出需要的数据后CopyToDataTable得到DataTable对象。如果你framework2的话只能遍历了,不支持linq
2 个月之前 回复
XuHui9310
XuHui9310 那把DataTable 分成 1~10,11~20,21~30 三部分,是不是只能依靠遍历呢?
2 个月之前 回复
guolidong_1211
guolidong_1211   2017.09.07 15:19

可以后台进行分页查询

qq_35491254
qq_35491254   2017.09.08 11:36
gamst
gamst   2017.09.13 11:40

先搞清楚为什么要这么做吧,我感觉楼主就是为了分页。。。

XuHui9310
XuHui9310   2017.09.19 08:52

stepLength = 100000;
IEnumerable listLoop = result.Rows.OfType().Skip(startIndex).Take(stepLength);
DataTable tempTable = listLoop.CopyToDataTable();

谢谢各位,这样就实现我问的了,非常感谢大家!

Csdn user default icon
上传中...
上传图片
插入图片