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)
`
这个怎么样:
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)