如何按c#中的行和列重新排列表

时间:2017-09-11 07:30:38

标签: c# asp.net

我有这样的表

+-----------+-----------+--------+
| Product-A | Product-B | Output |
+-----------+-----------+--------+
| A         | A         | 0      |
+-----------+-----------+--------+
| A         | B         | 1      |
+-----------+-----------+--------+
| B         | A         | 2      |
+-----------+-----------+--------+
| B         | B         | 3      |
+-----------+-----------+--------+

我想像这样重新排列表格

string columnname = "";
            DataTable dt1 = new DataTable();
            for (int i = 0; i < dt.Rows.Count+1; i++)
            {

                string getlist = "";
                if (i == 0)
                {
                    columnname = dt.Columns[i].ColumnName;
                    getlist = dt.Rows[i].ItemArray[0].ToString();

                }

                else if (i < dt.Rows.Count)
                {
                     getlist = dt.Rows[i].ItemArray[0].ToString();

                }
                else if (i < dt.Rows.Count+1)
                {
                    getlist = "Output";

                }
                dt1.Columns.Add(columnname + "-" + getlist, typeof(string));
            }

这里我创建了这样的标题

eventOrder : 'state',

我正在添加数据到该表中,可以提供一些添加此表的提示。

1 个答案:

答案 0 :(得分:2)

这是将值写入数据表

的方法
 for (int i = 0; i < dt.Rows.Count; i++)
            {
                string ProductA = dt.Rows[i].ItemArray[0].ToString();
                string Output = "";
                string ProductB = "";
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    if (j == 0)
                    {
                        ProductB = dt.Columns[j + 1].ColumnName;
                         Output =  dt.Rows[i][j+1].ToString();
                    }
                    else
                    {
                        ProductB = dt.Columns[j+1].ColumnName;
                        Output = dt.Rows[i][j+1].ToString();

                    }

                    dt1.Rows.Add(ProductA, ProductB, Output);

                }

            }