在 C# 中将 Object [,] 数组转换为数据集/数据表

Ran*_*nju 1 c# arrays datatable dataset multidimensional-array

C# 将多维对象[,]数组转换为数据集/数据表

我有 Object[,] 并且我将它传递给函数,我需要构建 Datatable

这是我的代码我正在尝试这种方式

 public static DataTable ArraytoDatatable(Object[,] numbers)
{                 
    DataTable dt = new DataTable();

Console.WriteLine(numbers.Rank);
Console.WriteLine(numbers.Length);

for (int dimension = 0; dimension < numbers.Rank; dimension++)
{
    dt.Columns.Add("Column"+(dimension+1));
}

Console.WriteLine("Array");
for (int element = 0; element < (numbers.Length / numbers.Rank); element++)
{
    DataRow row = dt.NewRow();
    for (int dimension = 0; dimension < numbers.Rank; dimension++)
    {
        Console.Write("{0} ", numbers[element,dimension]);                    
        row["Column" + (dimension + 1)] = numbers[element, dimension];
    }
    dt.Rows.Add(row);
    Console.WriteLine();
}

Console.WriteLine("DataTable");
foreach (DataRow row in dt.Rows)
{
    foreach (DataColumn column in dt.Columns)
    {
        Console.Write("{0} ", row[column]);
    }
    Console.WriteLine();
}

return dt;

}
Run Code Online (Sandbox Code Playgroud)

如果有任何其他方法,请帮助我

错误在这里请看这里 输入图片描述


我尝试的另一种方法是

-`

public DataSet ToDataSet(Object[,] myData)
     {
     DataSet ds = new DataSet();

     // Test 2D array of Objects so that different data types 
     // can be in each element


     // Create a DataTable object. Each row in the table is one
     // row in the array
     DataTable dt = new DataTable();
     // Create DataColumns for each column in the row
     // each column is a element in the array param 1 is the name
     // of the column and param 2 is its data type
     DataColumn dc = new DataColumn("block", typeof(System.String));
     // Add this column to the columns collection of the data table
     dt.Columns.Add(dc);
     dc = new DataColumn("mode", typeof(System.String));
     dt.Columns.Add(dc);


     dt.Columns.Add(dc);










     for (var i = 0; i < myData.GetLength(0); i++)
         for (var j = 0; j < myData.GetLength(1); j++)
             dt.Rows[i][j] = myData[i, j];


     // Add the row to the DataTable
     // dt.Rows.Add(data);


     // If you need to add the DataTable to a DataSet
     // then execute the next two lines
     DataSet ds1 = new DataSet();
     ds.Tables.Add(dt);



     return ds1;
 }
Run Code Online (Sandbox Code Playgroud)

`

Kva*_*vam 5

这个怎么样:

public static DataTable ArraytoDatatable(Object[,] numbers)
{                 
    DataTable dt = new DataTable();
    for (int i = 0; i < numbers.GetLength(1); i++)
    {
        dt.Columns.Add("Column" + (i + 1));
    }

    for (var i = 0; i < numbers.GetLength(0); ++i)
    {
        DataRow row = dt.NewRow();
        for (var j = 0; j < numbers.GetLength(1); ++j)
        {
            row[j] = numbers[i, j];
        }
        dt.Rows.Add(row);
    }
    return dt;
}
Run Code Online (Sandbox Code Playgroud)

用法:

var table = ArraytoDatatable(new object[2, 3] {
    { 1, 2, 3 },
    { 4, 5, 6 },
});
Run Code Online (Sandbox Code Playgroud)