zoukankan      html  css  js  c++  java
  • 分解数据表(将一个datatable按数据量分隔成多个table)

    /// <summary>
    /// 分解数据表
    /// </summary>
    /// <param name="originalTab">需要分解的表</param>
    /// <param name="rowsNum">每个表包含的数据量</param>
    /// <returns></returns>
    public DataSet SplitDataTable(DataTable originalTab, int rowsNum)
    {
    //获取所需创建的表数量
    if (rowsNum==0) {
    rowsNum = 1;
    }
    int tableNum = originalTab.Rows.Count / rowsNum;

    //获取数据余数
    int remainder = originalTab.Rows.Count % rowsNum;

    DataSet ds = new DataSet();

    //如果只需要创建1个表,直接将原始表存入DataSet
    if (tableNum == 0)
    {
    if (originalTab.Rows.Count==0) {
    ds.Tables.Add(new DataTable());
    }
    else
    {
    ds.Tables.Add(originalTab);
    }
    }
    else
    {
    DataTable[] tableSlice = new DataTable[tableNum];

    //Save orginal columns into new table.
    for (int c = 0; c < tableNum; c++)
    {
    tableSlice[c] = new DataTable();
    foreach (DataColumn dc in originalTab.Columns)
    {
    tableSlice[c].Columns.Add(dc.ColumnName, dc.DataType);
    }
    }
    //Import Rows
    for (int i = 0; i < tableNum; i++)
    {
    // if the current table is not the last one
    if (i != tableNum - 1)
    {
    for (int j = i * rowsNum; j < ((i + 1) * rowsNum); j++)
    {
    tableSlice[i].ImportRow(originalTab.Rows[j]);
    }
    }
    else
    {
    for (int k = i * rowsNum; k < ((i + 1) * rowsNum + remainder); k++)
    {
    tableSlice[i].ImportRow(originalTab.Rows[k]);
    }
    }
    }

    //add all tables into a dataset
    foreach (DataTable dt in tableSlice)
    {
    ds.Tables.Add(dt);
    }
    }
    return ds;
    }

  • 相关阅读:
    跨公司销售利润中心替代
    [WCF学习笔记] 我的WCF之旅(1):创建一个简单的WCF程序
    linux操作常用命令
    java lambda表达式
    关于lock和synchronized的选择
    ssh免密登陆(简单快捷)
    su和sudo的区别
    Linux常用查找命令
    vmware完整克隆(linux)
    springboot2.0拦截器和webconfigure配置
  • 原文地址:https://www.cnblogs.com/zhang-wenbin/p/7904590.html
Copyright © 2011-2022 走看看