【发布时间】:2015-10-29 15:00:40
【问题描述】:
C# 将多维 Object[,]array 转换为数据集/数据表
我有 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;
}
如果有其他方法请帮助我
这里有错误请看一下 enter image description here
我尝试的另一种方法是
-`
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;
}
`
【问题讨论】:
-
你已经展示了你尝试过的东西,它有效吗?它有什么问题?
-
@tim 请看附图
-
你能把数字放在 XML 中,还是必须把它们放在一个数组中?如果您可以将它们保存在 XML 中,那么就像调用
DataTable.ReadXml()函数一样简单。 -
@RacilHilan .... 抱歉,我试过了,但它适用于单维而不适用于多维对象 [,] 数组
-
为什么? XML适用于几乎任何类型的数据,包括非常容易的多维数据。试试
<col1>value1</col1><col2>value2</col2>之类的东西。如果您愿意,我可以将其发布为答案
标签: c# arrays multidimensional-array datatable dataset