DataTable按照行拆分,一行拆分为两行,业务处理完成后,合并——两行合并为一行

拆分函数

        /// <summary>
        /// 拆分DataTable
        /// </summary>
        private DataTable SplitDataTable(DataTable sourceTable)
        {
            if (sourceTable == null || sourceTable.Rows.Count == 0)
            {
                return sourceTable;
            }
            DataTable dataTable = sourceTable.Clone();
            try
            {
                for (int i = 0; i < sourceTable.Rows.Count; i++)
                {
                    dataTable.Rows.Add(sourceTable.Rows[i].ItemArray);
                    dataTable.Rows.Add(sourceTable.Rows[i].ItemArray);
                }
                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    bool isOdd = false;
                    if ((i + 1) % 2 == 1)
                    {
                        isOdd = true;
                    }
                    for (int j = 0; j < dataTable.Rows[i].ItemArray.Length; j++)
                    {
                        if (isOdd)
                        {
                            string pre = dataTable.Rows[i].ItemArray[j].ToString().Substring(0, 1);
                            dataTable.Rows[i][j] = pre;
                        }
                        else
                        {
                            string next = dataTable.Rows[i].ItemArray[j].ToString().Substring(1, 1);
                            dataTable.Rows[i][j] = next;
                        }
                    }
                    isOdd = false;
                }
            }
            catch (Exception ex)
            {
               
            }
            return dataTable;
        }

//业务处理函数

// ... ...

//合并函数

   /// <summary>
        /// 合并DataTable
        /// </summary>
        private DataTable MergeDataTable(DataTable sourceTable)
        {
            if (sourceTable == null || sourceTable.Rows.Count == 0)
            {
                return sourceTable;
            }

            DataTable newDataTable1 = sourceTable.Clone();
            try
            {

                for (int i = 0; i < sourceTable.Rows.Count; i++)
                {
                    if ((i + 1) % 2 == 1)
                    {
                        newDataTable1.Rows.Add(sourceTable.Rows[i].ItemArray);
                    }
                }

                for (int i = 0; i < sourceTable.Rows.Count; i++)
                {
                    if (((i + 1)) % 2 == 0)
                    {
                        for (int k = 0; k < sourceTable.Rows[i].ItemArray.Length; k++)
                        {
                            string next = sourceTable.Rows[i].ItemArray[k].ToString();
                            newDataTable1.Rows[i / 2][k] = newDataTable1.Rows[i / 2][k].ToString() + next;
                        }
                    }
                }
            }
            catch (Exception ex)
            {

            }
            return newDataTable1;
        }

//测试

        static DataTable GetDataTable()
        {
            //五行五列DataTable,作为待测试DataTable
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add(new DataColumn("dvalue1"));
            dataTable.Columns.Add(new DataColumn("dvalue2"));
            dataTable.Columns.Add(new DataColumn("dvalue3"));
            dataTable.Columns.Add(new DataColumn("dvalue4"));
            dataTable.Columns.Add(new DataColumn("dvalue5"));
            dataTable.Rows.Add(new object[] { "AA", "AB", "AC", "AD", "??" });
            dataTable.Rows.Add(new object[] { "BA", "BB", "BC", "BD", "??" });
            dataTable.Rows.Add(new object[] { "CA", "CD", "DA", "DB", "??" });
            dataTable.Rows.Add(new object[] { "DC", "DD", "CC", "AD", "??" });
            dataTable.Rows.Add(new object[] { "AA", "BB", "CC", "DD", "??" });
            return dataTable;
        }

DataTable dataTable = GetDataTable();

//输出结果

源数据表格式:

   AA   AB   AC   AD   ??

   BA   BB   BC   BD   ??

   CA   CD   DA   DB   ??

   DC   DD   CC   AD   ??

   AA   BB   CC   DD   ??

拆分完成后的数据表格式:

   A   A   A   A   ?

   A   B   C   D   ?

   B   B   B   B   ?

   A   B   C   D   ?

   C   C   D   D   ?

   A   D   A   B   ?

   D   D   C   A   ?

   C   D   C   D   ?

   A   B   C   D   ?

   A   B   C   D   ?

//合并完成后的数据表格式:

   AA   AB   AC   AD   ??

   BA   BB   BC   BD   ??

   CA   CD   DA   DB   ??

   DC   DD   CC   AD   ??

   AA   BB   CC   DD   ??

猜你喜欢

转载自www.cnblogs.com/jeff151013/p/10593765.html