DataTable的Add方法包含使用对象数组向表中添加数据的重载。
我想有一个数组数组,我可以循环并插入到DataTable中。下面的代码创建一个大小为4000的数组,并将一个4“列”的数组放入外部数组的第0个元素中(ContiguousTradeMem)。
但是,当我调试下面的最后一行时,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
答案 0 :(得分:4)
实际上DatarowCollection.Add
的重载需要param
数组,类似于参数列表。您可以通过以下方式初始化并添加数组中的DataRow:
var row = test.NewRow();
row.ItemArray = (Object[])ContiguousTradeMem[0];
test.Rows.Add(row);
答案 1 :(得分: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)
答案 2 :(得分: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 });