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
11 个月之前 回复
XuHui9310
XuHui9310 那把DataTable 分成 1~10,11~20,21~30 三部分,是不是只能依靠遍历呢?
11 个月之前 回复
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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
.net将一个DataTable拆分成n个DataTable
C# /// /// 分解数据表 /// /// 需要分解的表 /// 每个表包含的数据量 /// public DataSet SplitDataTable(DataTable originalTab, int rowsNum) {
将一个dataTable拆成多个
<br />      最近遇到一个问题害我郁闷了很久,在一个页面里分类显示数据,每一个大类里的数据是动态取得。打算将它分三列显示,希望得到的效果:显示成了:<br />  AA  CCEEAACCEE<br /> aaacceeaaccee<br /> aaacceeaaccee<br /> BBBcceeccee<br /> bbbcceeccee<br /> bbbDDeeee<br /> bbbddFFBBDDFF<br />ffbbbddff<br />ffbbbff<br />     思索良久
DataTable 按条件拆分多个表(DataTable分组)
http://www.cnblogs.com/kylemo/archive/2011/07/31/2122640.html
C#将多个DataTable合并的方法
public DataTable GetAllDataTable(DataSet ds)      {          DataTable newDataTable = ds.Tables[0].Clone();                //创建新表 克隆以有表的架构。          object[] objArray = new object[newDataTable.Colu
C# 将多个DataTable添加到指定的DataSet中
如何将多个DataTable添加到指定的DataSet中 事件起因:从数据库中,查询多个dataTable,现在想一下子返回多个table,所以就想到用DATASET,遇到下面的两个现象,现在记录下,做个参考。DataSet ds = new DataSet();//创建数据集DataTable dt1 = BIZ.GetSalesInfo();//获取出售信息表DataTable dt2 =
将两个DataTable合并成一个DataTable
//两个结构一样的DT合并 DataTable DataTable1 = new DataTable(); DataTable DataTable2 = new DataTable(); DataTable newDataTable = DataTable1.Clone(); object[] obj = new object[newDataTable.Columns.Count];
C# 将两个不同的dataTable合并到一个自定义的dataTable中
//比较三种情况 for (int i = 0; i < dataTable_yh.Rows.Count; i++) { string vin = dataTable_yh.Rows[i]["VIN"].ToString(); string clxh = dataTable_yh.Row
c# 多个DataTable的合并成一个新表
c# 多个DataTable的合并成一个新表 http://msdn.microsoft.com/zh-tw/library/wkk7s5zk(v=vs.100).aspx http://blog.csdn.net/firetaker/article/details/5530410 http://www.cnblogs.com/JuneZhang/archive/2011/12/11
关于多个datatable合并到一个dataset
在公司有任务需要一次性导出含有多个sheet的excel, 思路是: 先获取每一个datatable 将结构不同的datatable合并为一个dataset 将这个dataset导出excel。 合并过程中遇到了结构不同的datatable的合并问题? 1.此datatable已存在于另一个dataset中 2.此datatable已存在于此dataset中 解决办
将多个DataTable添加到指定的DataSet中
将多个DataTable添加到指定的DataSet中 如何将多个DataTable添加到指定的DataSet中 事件起因:从数据库中,查询多个dataTable,现在想一下子返回多个table,所以就想到用DATASET,遇到下面的两个现象,现在记录下,做个参考。DataSet ds = new DataSet();//创建数据集DataTable dt1 = BIZ. Get