Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中将对象[,]数组转换为数据集/数据表#_C#_Arrays_Multidimensional Array_Datatable_Dataset - Fatal编程技术网

C# 在C语言中将对象[,]数组转换为数据集/数据表#

C# 在C语言中将对象[,]数组转换为数据集/数据表#,c#,arrays,multidimensional-array,datatable,dataset,C#,Arrays,Multidimensional Array,Datatable,Dataset,C#将多维对象[,]数组转换为数据集/数据表 我有对象[,],我正在将其传递给函数,我需要构建数据表 这是我的代码,我正在尝试这种方式 public static DataTable ArraytoDatatable(Object[,] numbers) { DataTable dt = new DataTable(); Console.WriteLine(numbers.Rank); Console.WriteLine(numbers.Length

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

我有对象[,],我正在将其传递给函数,我需要构建数据表

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

 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;

}
公共静态数据表ArraytoDatatable(对象[,]编号)
{                 
DataTable dt=新的DataTable();
控制台.WriteLine(数字.Rank);
控制台。写入线(数字。长度);
对于(int维度=0;维度
如果有其他方法,请帮助我

错误在这里,请看一看


我尝试的另一种方法是

-`

公共数据集到数据集(对象[,]myData)
{
数据集ds=新数据集();
//测试对象的二维数组,以便使用不同的数据类型
//可以在每个元素中使用
//创建DataTable对象。表中的每一行都是一个
//数组中的行
DataTable dt=新的DataTable();
//为行中的每列创建DataColumns
//每列是数组中的一个元素,参数1是名称
//列的属性,参数2是其数据类型
DataColumn dc=新的DataColumn(“块”,typeof(System.String));
//将此列添加到数据表的columns集合中
dt.Columns.Add(dc);
dc=新数据列(“模式”,类型(System.String));
dt.Columns.Add(dc);
dt.Columns.Add(dc);
对于(var i=0;i
`这个怎么样:

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;
}
这个怎么样:

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;
}

您可以使用
Array.GetLength
获取多维数组的维度长度:

int width = numbers.GetLength(0);
int height = numbers.GetLength(1);

for (int w = 0; w < width; w++)
{
    dt.Columns.Add("Column" + (w + 1));
}

for (int h = 0; h < height; h++)
{
    DataRow row = dt.NewRow();
    for (int w = 0; w < width; w++)
    {
        Console.Write("{0} ", numbers[w, h]);
        row["Column" + (w + 1)] = numbers[w, h];
    }
    dt.Rows.Add(row);
    Console.WriteLine();
}
使用此示例数据:

object[,] objects = new object[2, 3];
int width = objects.GetLength(0);
int height = objects.GetLength(1);
for (int w = 0; w < width; w++)
    for (int h = 0; h < height; h++)
        objects[w, h] = string.Format("Cell {0}|{1}", w, h);
object[,]objects=新对象[2,3];
int width=objects.GetLength(0);
int height=objects.GetLength(1);
对于(int w=0;w
您可以使用
Array.GetLength
获取多维数组的维度长度:

int width = numbers.GetLength(0);
int height = numbers.GetLength(1);

for (int w = 0; w < width; w++)
{
    dt.Columns.Add("Column" + (w + 1));
}

for (int h = 0; h < height; h++)
{
    DataRow row = dt.NewRow();
    for (int w = 0; w < width; w++)
    {
        Console.Write("{0} ", numbers[w, h]);
        row["Column" + (w + 1)] = numbers[w, h];
    }
    dt.Rows.Add(row);
    Console.WriteLine();
}
使用此示例数据:

object[,] objects = new object[2, 3];
int width = objects.GetLength(0);
int height = objects.GetLength(1);
for (int w = 0; w < width; w++)
    for (int h = 0; h < height; h++)
        objects[w, h] = string.Format("Cell {0}|{1}", w, h);
object[,]objects=新对象[2,3];
int width=objects.GetLength(0);
int height=objects.GetLength(1);
对于(int w=0;w
如果您想知道如何在XML中执行此操作,您的函数将非常简单:

public static DataTable ArraytoDatatable(string numbers)
{
    DataSet ds = new DataSet();
    ds.ReadXml(new StringReader(numbers));
    return ds.Tables[0];
}
下面是如何编写xml并对其进行测试:

string xml = "<?xml version=\"1.0\"?><numbers>"
    + "<row><col1>1</col1><col2>2</col2></row>"
    + "<row><col1>3</col1><col2>4</col2></row>"
    + "<row><col1>5</col1><col2>6</col2></row>"
    + "<row><col1>7</col1><col2>8</col2></row>"
    + "</numbers>";

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

    Console.WriteLine();
}
string xml=“”
+ "12"
+ "34"
+ "56"
+ "78"
+ "";
DataTable dt=ArraytoDatatable(xml);
WriteLine(“DataTable(“+dt.Columns.Count+”列中的+dt.Rows.Count+”行)”);
foreach(数据行中的数据行)
{
foreach(dt.Columns中的DataColumn列)
{
Write(“{0}”,行[列];
}
Console.WriteLine();
}

下面是一个。

如果您想知道如何在XML中执行此操作,您的函数将非常简单:

public static DataTable ArraytoDatatable(string numbers)
{
    DataSet ds = new DataSet();
    ds.ReadXml(new StringReader(numbers));
    return ds.Tables[0];
}
下面是如何编写xml并对其进行测试:

string xml = "<?xml version=\"1.0\"?><numbers>"
    + "<row><col1>1</col1><col2>2</col2></row>"
    + "<row><col1>3</col1><col2>4</col2></row>"
    + "<row><col1>5</col1><col2>6</col2></row>"
    + "<row><col1>7</col1><col2>8</col2></row>"
    + "</numbers>";

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

    Console.WriteLine();
}
string xml=“”
+ "12"
+ "34"
+ "56"
+ "78"
+ "";
DataTable dt=ArraytoDatatable(xml);
WriteLine(“DataTable(“+dt.Columns.Count+”列中的+dt.Rows.Count+”行)”);
foreach(数据行中的数据行)
{
foreach(dt.Columns中的DataColumn列)
{
Write(“{0}”,行[列];
}
Console.WriteLine();
}

这是一个。

您已经展示了您所尝试的,它有效吗?有什么问题吗?@tim请查看附件中的图像。您可以将数字用XML表示,还是必须将它们放在数组中?如果可以使用XML格式,则只需调用
DataTable.ReadXml()
函数即可。@RacilHilan。。。。对不起,我试过了,但它适合于一维对象,而不适合于多维对象[,]阵列为什么?XML适用于几乎任何类型的数据,包括非常简单的多维数据。尝试类似于
value1value2
的方法。如果你愿意的话,我可以把它作为一个答案贴出来。你已经展示了你的尝试,它有效吗?有什么问题吗?@tim请查看附件中的图像。您可以将数字用XML表示,还是必须将它们放在数组中?如果可以使用XML格式,则只需调用
DataTable.ReadXml()
函数即可。@RacilHilan。。。。对不起,我试过了,但它适合于一维对象,而不适合于多维对象[,]阵列为什么?XML适用于几乎任何类型的数据,包括非常简单的多维数据。尝试类似于
value1value2
的方法。如果您喜欢此示例数据,我可以将其作为答案发布,它工作正常,但如果我传递我的对象[,],不幸的是,它不显示在网格视图上,或者我们创建的Datatable无法查看它,但正如您针对小数据显示的,是的!不算大data@Ranju:您的阵列有多大?你确定它不是简单地太大吗?
数据表是否成功创建?那么这可能是另一个问题