2017-07-09 14 views
-1

データセットがあり、forループで値を追加しています。既存のデータセットにデータを追加する方法

System.Data.DataSet dsUserResult = new System.Data.DataSet(); 
dsUserResult = new System.Data.DataSet(); 
for (i= 0; i< 3; i++) { 
    dsUserResult = getUserByProgramId(i); //This return some values and store it into the dsUserresult 
} 

getUserByProgramId(i) return 4値はi=0、それがデータセットに格納するが、それは二度目(i=1)のために再度実行されるとき、それは既存のデータセットの値を削除し、新しい値を追加するとき、私は実際に新しい値にしたい場合は、データセットに追加された以前の値が付加されます。

+0

どのように多くの? – Dai

答えて

1

データセットに値を追加していません。各ループで、dsUserResultの以前の値を、getUserByProgramIdへの呼び出しによって返された新しいデータセットと置き換えます。ループが終了し、存在する唯一のデータセットはループから取り出された最後のデータセットです。

データセットには、DataTableのコレクションが含まれています。このコレクションには、データベースから取得した値が格納されます。

したがって、メソッドの名前から、そのメソッドを呼び出すたびに、返されたデータセットの最初のDataTableに格納されている別のユーザーセットが取得されると仮定します。

これはgetUserByProgramIdの内側に何が起こるかであるなら、あなたは第二のループと第3のループの結果に最初のループの結果をマージする必要があります。しかし、マージしたいのは、返されたDataSetに含まれるDataTableです。

// First dataset used as base... 
dsUserResult = getUserByProgramId(0); 

// skip the first and get the other two. 
for (i=1; i<3; i++) 
{ 
    // Get another one... 
    DataSet ds = getUserByProgramId(i); 

    // Merge the content of the first table currently returned 
    // with the content of the base dataset.... 
    dsUserResult.Tables[0].Merge(ds.Tables[0]); 
} 

についてDataTable.Merge
DataSetオブジェクト内のテーブルと列がgetUserByProgramId` `から返さについてDataset.Tables

関連する問題