zoukankan      html  css  js  c++  java
  • 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   ??

  • 相关阅读:
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)I
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)F
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)H
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)E
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)G
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)C
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)D
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)A
    哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)B
    HDU 6187 Destroy Walls
  • 原文地址:https://www.cnblogs.com/jeff151013/p/10593765.html
Copyright © 2011-2022 走看看