2012-04-18 10 views
0

DataTableのAddメソッドには、オブジェクト配列を使用してテーブルにデータを追加するオーバーロードが含まれています。オブジェクト[]を使用してデータテーブルにデータを追加できませんか?

私はループバックしてDataTableに挿入できる配列の配列を持っていたいと思います。以下のコードは、4000の配列を作成し、外側の配列(ContiguousTradeMem)の0番目の要素に4つの "列"の配列を配置します。

しかし、私が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列のテーブルに4行(配列)を追加しようとしていると思います。 – Marshal

+0

あなたは47の質問があり、答えは66%しか受け入れられません。あなたを助ける人々が好きではありませんか? –

答えて

2

実際に過負荷をDatarowCollection.Addの配列は、パラメタのリストと同様のparamの配列をとります。あなたはこのようにあなたの配列からのDataRowを初期化して追加することができます。

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

params C#

+0

をご覧ください。ありがとうございます。問題は暗黙のうちにオブジェクトをオブジェクト[]に変換できないというコンパイラエラーが発生することだけです。 – mezamorphic

+1

@ user1107474:キャッシュはオブジェクトを格納し、コンパイラはCache [0]が配列であることを知らないためです。適切な型にキャストするだけです: 'row.ItemArray =(Object [])ContiguousTradeMem [0];'(私の答えを編集しました) –

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 }); 
+0

こんにちは、私は、複数のロットの "testObject"をキャッシュ配列、ContiguousTradeMemに追加してから、ContiguousTradeMemを繰り返してDataTableにすべて追加します。これはまだ可能ですか? – mezamorphic

+0

@ user1107474編集 – Marshal

1

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) 
関連する問題