数组的数组形成矩阵c#

时间:2016-11-15 06:29:34

标签: c# asp.net

嗨在我的要求中我有数组值(1到12)我想将数组值用于矩阵示例的形成。  我想要我尝试的输出,但我得到重复行请解决这个问题。

预期输出为:

 A  B  C  D 
 1  2  3  4
 5  6  7  8
 9  10 11 12
 13 14 15 16

我正在使用的代码

 DataTable dt = new DataTable();
    dt.Columns.Add("Col1");
    dt.Columns.Add("Col2");
    dt.Rows.Add("A", "1");
    dt.Rows.Add("B", "2");
    dt.Rows.Add("C", "3");
    dt.Rows.Add("D", "4");
    dt.Rows.Add("A", "5");
    dt.Rows.Add("B", "6");
    dt.Rows.Add("C", "7");
    dt.Rows.Add("D", "8");
    dt.Rows.Add("A", "9");
    dt.Rows.Add("B", "10");
    dt.Rows.Add("C", "11");
    dt.Rows.Add("D", "12");
    dt.AcceptChanges();
    int[] intArray = new int[10];
    DataTable dt2 = new DataTable();
    for (int i = 0; i <= dt.Rows.Count; i++)
    {
        if (!(dt2.Columns.Contains(dt.Rows[i][0].ToString())))
        {
            dt2.Columns.Add(dt.Rows[i][0].ToString());
        }
        else
            break;
    }
    int x = 0;
    int m = 0;
    for (int j = x; j < dt.Rows.Count; j++)
    {
        // create a DataRow using .NewRow()
        DataRow row = dt2.NewRow();
        int i = 0;
        // iterate over all columns to fill the row
        for (i = 0; i < dt2.Columns.Count; i++)
        {
            row[i] = dt.Rows[i][1];
            x = i;
        }
        // add the current row to the DataTable
        dt2.Rows.Add(row);
    }

1 个答案:

答案 0 :(得分:1)

如果我误解了你的要求,请原谅我。从问题中不清楚,你不愿意添加更多信息。指定的输出看起来像DataTable,标题为A,B,C,D,如果是这样,您可以尝试以下代码:

int[] inputElements = Enumerable.Range(1, 12).ToArray(); // Will give you array(1-12)
DataTable outputTable = new DataTable();
outputTable.Columns.Add("A");
outputTable.Columns.Add("B");
outputTable.Columns.Add("C");
outputTable.Columns.Add("D");
for (int i = 0; i < inputElements.Length - 1; )
{
    DataRow dRow = outputTable.NewRow();
    for (int j = 0; j < 4; j++)
    {
        dRow[j] = inputElements[i];
        i++;
    }
    outputTable.Rows.Add(dRow);
}

输出表将是这样的:

enter image description here