0

DataTable 的 Add 方法包含使用对象数组将数据添加到表的重载。

我想要一个数组数组,我可以循环并插入到 DataTable 中。下面的代码创建了一个大小为 4000 的数组,并将一个包含 4 个“列”的数组放入外部数组 (ContiguousTradeMem) 的第 0 个元素中。

但是,当我调试 testObject 中(以及缓存中 - ContiguousTradeMem [] )中的所有数据下方的最后一行时,不会将其复制到 DataTable() 中?

//The "array" which we wish to insert into the DataTable
object[] testObject = new object[4];

//Inserts some test data
for (int m = 0; m < 4; m++)
{
    testObject[m] = "test";
}

//A test DataTable
DataTable test = new DataTable();
test.Columns.Add("Col1");
test.Columns.Add("Col2");
test.Columns.Add("Col3");
test.Columns.Add("Col4");

//Put the test "array" into the cache
ContiguousTradeMem[0] = testObject; //The data of testObject is fine here

//Write the cache element to the DataTable
test.Rows.Add(ContiguousTradeMem[0]); //The data is not fine in test.Rows
4

3 回答 3

4

实际上,重载DatarowCollection.Add需要一个param类似于参数列表的数组。您可以通过以下方式从数组中初始化和添加 DataRow:

var row = test.NewRow();
row.ItemArray = (Object[])ContiguousTradeMem[0];
test.Rows.Add(row);

参数 C#

于 2012-04-18T10:55:26.293 回答
2

test.Rows.Add 将现有的 DataRow 对象添加到您的表中。首先,您必须创建新行,然后用您的数据填充它,然后 - 将其添加到您的数据表中。这是VB中的代码,很简单,所以你可以把它翻译成C#:)

Dim t As New DataTable
Dim r As DataRow
r = t.NewRow()
r.ItemArray = testObject
t.Rows.Add(r)
于 2012-04-18T11:01:43.587 回答
0

我认为您正在尝试将 4 行(数组)添加到 4 个列式表中。

逻辑上应该是:

DataRow newRow = test.NewRow();

newRow [0] = testObject[0];
newRow [1] = testObject[1];
newRow [2] = testObject[2];
newRow [4] = testObject[3];

test.Rows.Add(newRow );

您也可以传入一个对象数组,如下所示:

DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("Name");
dt.Columns.Add("Marks");
object[] o = { "Ravi", 500 };
dt.Rows.Add(o);

甚至:

dt.Rows.Add(new object[] { "Ravi", 500 });
于 2012-04-18T10:48:48.210 回答