2013-01-16 3 views
0
  sqlHelper = new SqlHelper(); 
      sqlHelper.OpenConnection(); 
      int i; 
      String sqlSt = string.Empty; 
      for (i = 0; i < tag.Count; i++) 
      { 
       sqlSt = "Select TagID from TagsList where TagName= '" + tag[i] + "'"; 
       ds = sqlHelper.ExecuteDataSet(sqlSt, CommandType.Text); 

       if (ds != null) 
       { 
        if (ds.Tables[0].Rows.Count > 0) 
        { 
         //dt = ds1.Tables[0]; 
         ds.Tables[0].Rows.Add(ds); 
        } 
       } 
      } 
      return ds; 

Je souhaite ajouter un DataSet à un autre et à la fin, le DataSet cumulatif serait renvoyé.Ajouter un jeu de données à un autre jeu de données comme un DataRow en C#

Je reçois une erreur - Unable to cast object of type 'System.Data.DataSet' to type 'System.IConvertible'.Couldn't store <System.Data.DataSet>

EDIT: Voulez-vous que je veux est que je reçois un DataSet qui se compose d'une valeur int particulier chaque type mon pour des courses en boucle je veux Ajouter l'ensemble de ces enregistrements dans le DataSet puis retourner mon Dataset

+0

Vous devez ranger par ligne dans le DataTable. Au lieu de Add(), utilisez ImportRow() –

Répondre

0

Je me demande si cela est une faute de frappe puisque vous ajoutez la même DataSet aux lignes de sa première table de la collection:

ds.Tables [0] .Rows.Add (ds)

Si je comprends bien vous avez un DataSet ds1 et que vous souhaitez ajouter à ses tables ds. Pour cela, vous devrez vous déplacer table par table en deux étapes: clonage de la table et importation de ses lignes.

Par exemple, cette copie la première table (index 0):

//clone first table 
DataTable dt = ds1.Tables[0].Clone(); 
//add rows 
foreach (DataRow dr in ds1.Tables[0].Rows) 
{ 
    dt.ImportRow(dr); 
} 
//add table to DataSet 
ds.Tables.Add(dt); 

Edité: Je regarderais aussi dans le DataTableExtensionsCopyToDataTable. Il pense que vous pouvez faire juste (non testé):

//copy first table 
DataTable dt = ds1.Tables[0].AsEnumerable().CopyToDataTable();  
//add table to DataSet 
ds.Tables.Add(dt); 
+0

s'il vous plaît vérifier mon edit – vini

+0

Si je comprends bien, vous allez vérifier une valeur et en fonction de cette valeur, vous allez ajouter les enregistrements? et enfin retourner l'ensemble de données? – Ulises

0

Techniquement, nous ne pouvons pas ajouter un dataSet Autres Dataset, Parce que dans ASP.NET DataSets sont en lecture seule habituellement.

Donc, nous devons d'abord créer une référence d'objet de Second DataSet.

Étapes:

bool IsFirstTime = true;(Create OutSide Loop) 

intérieur boucle:

if (IsFirstTime) 

{ 

// dsLoopData Contains Records 

dsTotalRecords = dsLoopData.Clone(); 

IsFirstTime = false; 

} 

1.Sur un temps Insert (pour copie en bloc)

dsTotalRecords.Tables[0].Merge(dsLoopData.Tables[0]); 

2.Row par ligne d'insertion

for (int i = 0; i < dsLoopData.Tables[0].Rows.Count; i++) 

{ 

dsTotalRecords.Tables[0].ImportRow(dsLoopData.Tables[0].Rows[i]); 

} 
Questions connexes