2013-01-16 109 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; 

我想將一個數據集添加到另一個數據集,最後返回累積數據集。將數據集添加到另一個數據集(如C#中的DataRow)

我得到一個錯誤 - Unable to cast object of type 'System.Data.DataSet' to type 'System.IConvertible'.Couldn't store <System.Data.DataSet>

編輯:要我要的是我得到的是由一個特定的int值的各型我的for循環的運行,我想所有的這些記錄添加到DataSet該數據集,然後回到我的數據集

+0

您必須逐行排列DataTable。而不是Add()使用ImportRow() –

回答

0

我不知道這是一個錯字,因爲要添加相同的數據集,以它的第一個表的行集:

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

如果我理解正確的話,你有一個DataSet ds1,你想它的表添加到ds。爲此,您需要按兩步移動表格:克隆表格並導入其行

例如,該複製第一表(索引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); 

編輯: 我也將調查DataTableExtensionsCopyToDataTable。它相信你也可以這樣做(未經測試):

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

請檢查我的編輯 – vini

+0

如果我理解正確,您將檢查一個值並根據此值添加記錄?最後返回數據集? – Ulises

0

技術上我們不能添加一個數據集爲其他數據集,因爲在ASP.NET數據集通常是隻讀的。

因此,首先我們要創建第二個DataSet的對象引用。

步驟:

bool IsFirstTime = true;(Create OutSide Loop) 

內環:

if (IsFirstTime) 

{ 

// dsLoopData Contains Records 

dsTotalRecords = dsLoopData.Clone(); 

IsFirstTime = false; 

} 

1.At一次插入(對於批量複製)

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

2.Row按行插入

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

{ 

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

} 
相關問題