c# json轉datatable - 如何將一個DataTable附加到另一個DataTable




c#產生json json教學 (5)

添加兩個包含數據表的數據集,現在它將根據需要進行合併

DataSet ds1 = new DataSet();
DataSet ds2 = new DataSet();

DataTable dt1 = new DataTable();
dt1.Columns.Add(new DataColumn("Column1", typeof(System.String)));

DataRow newSelRow1 = dt1.NewRow();
newSelRow1["Column1"] = "Select";
dt1.Rows.Add(newSelRow1);

DataTable dt2 = new DataTable();
dt2.Columns.Add(new DataColumn("Column1", typeof(System.String)));

DataRow newSelRow2 = dt1.NewRow();
newSelRow2["Column1"] = "DataRow1Data";  // Data
dt2.Rows.Add(newSelRow2);

ds1.Tables.Add(dt1);
ds2.Tables.Add(dt2);

ds1.Tables[0].Merge(ds2.Tables[0]);

現在ds1將擁有合併的數據

我想將一個DataTable附加到另一個DataTable。 我看到DataTable類有兩個方法; “加載(IDataReader)”和“合併(DataTable)”。 從文檔中,如果存在行,兩者似乎都會將傳入數據與現有DataTable“合併”。 我將在數據訪問層中進行合併。

我可以使用IDataReader並使用Load方法合併DataTables。 或者我可以使用IDataReader加載DataSet,從DataSet獲取DataTable,然後使用Merge方法合併DataTables。

我想知道是否有人能告訴我哪種方法可以使用?

或者,如果您對如何完成此任務有不同的建議,請與我們聯繫。


Merge採用DataTable,Load需要IDataReader - 因此,根據您的數據層允許訪問的內容,使用所需的方法。 我的理解是Load會在內部調用Merge,但不是100%肯定。

如果您有兩個DataTable,請使用Merge。


同一列名中的數據類型必須為equals。

dataTable1.Merge(dataTable2);

之後結果是:

dataTable1 = dataTable1 + dataTable2


您可以讓DataAdapter完成工作。 DataAdapter.Fill(DataTable)會將新行追加到DataTable任何現有行。


當我遇到同樣的問題時,我尋求谷歌的幫助,而不是給我一個簡單的解決方案,它給了我更多的方法給例子MethodInvoker和等等等等等等。 所以我決定自己解決。 這是我的解決方案:

Make a delegate like this:

Public delegate void LabelDelegate(string s);

void Updatelabel(string text)
{
   if (label.InvokeRequired)
   {
       LabelDelegate LDEL = new LabelDelegate(Updatelabel);
       label.Invoke(LDEL, text);
   }
   else
       label.Text = text
}

You can call this function in a new thread like this

Thread th = new Thread(() => Updatelabel("Hello World"));
th.start();

Don't be confused with Thread(() => .....) . I use an anonymous function or lambda expression when I work on a thread. To reduce the lines of code you can use the ThreadStart(..) method too which I am not supposed to explain here.





c# .net vb.net datatable