C#
现有一张表,里面信息项数不详,想将这张表拆分,每二十项数据分为一张表,请问代码该怎么写啊
C#

解决方案 »

  1.   

      /// <summary>
            /// 分割TABLE
            /// </summary>
            /// <param name="p_Table">原始TABLE</param>
            /// <param name="p_Count">没页多少个</param>
            /// <returns></returns>
            public static IList<DataTable> CopyTable(DataTable p_Table, int p_Count)
            {
                int _TableCount = p_Table.Rows.Count / p_Count;
                if (p_Table.Rows.Count % p_Count != 0) _TableCount++;            IList<DataTable> _TableList = new List<DataTable>();            for (int i = 0; i != _TableCount; i++)
                {
                    DataTable _Table = p_Table.Clone();
                    for (int z = 0; z != p_Count; z++)
                    {
                        int _RowIndex = (i * p_Count) + z;
                        if (_RowIndex > p_Table.Rows.Count - 1) break;
                        _Table.Rows.Add(p_Table.Rows[_RowIndex].ItemArray);
                    }
                    _TableList.Add(_Table);
                }
                return _TableList;
            }这个看行不
      

  2.   


     DataTable dt = new DataTable();//虚拟一个有75行数据的数据表
                dt.Columns.Add("ID");
                for (int w = 0; w < 75; w++)
                {
                    DataRow dr = dt.NewRow();
                    dr["ID"] = w.ToString();
                    dt.Rows.Add(dr);
                }
                int i = dt.Rows.Count;
                int x = i / 20;//要分多少个表
                if (i % 20 > 0)
                {
                    x++;
                }
                DataTable[] dts = new DataTable[x];
                int y = 0;
                for (int j = 0; j < x; j++)
                {
                    dts[j] = new DataTable();
                    dts[j].Columns.Add("ID");
                    for (int row = y; row < y + 20; row++)
                    {
                        if (row < i)
                        {
                            dts[j].ImportRow(dt.Rows[row]);
                        }
                    }
                    y += 20;
                }