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 に答える