合并2个数据表,并存储在一个新的
如果我有2个DataTable(dtOne和dtTwo),我想合并它们,并将它们放在另一个DataTable(dtAll)。 我怎样才能在C#中做到这一点? 我尝试了数据表上的Merge语句,但是这个返回void。 合并是否保留数据? 例如,如果我这样做:
dtOne.Merge(dtTwo);
dtOne是否改变或dtTwo是否改变,如果任何一个改变,改变保存?
我知道我不能这样做,因为合并返回void,但我想能够存储dtOne和dtTwo在dtAll的合并:
//Will Not work, How do I do this dtAll = dtOne.Merge(dtTwo);
Merge
方法从第二个表中获取值,并将它们与第一个表合并,所以第一个将保存两个值。
如果要保留两个原始表,则可以先复制原始表,然后合并:
dtAll = dtOne.Copy(); dtAll.Merge(dtTwo);
(很晚,但可能会帮助别人绊倒这个问题。)
而不是dtAll = dtOne.Copy();
在Jeromy Irvine的答案你可以做:
dtAll = new DataTable(); ... dtAll.Merge(dtOne); dtAll.Merge(dtTwo); dtAll.Merge(dtThree); ...
等等。
这个技术在你想迭代合并数据表的循环中很有用:
DataTable dtAllCountries = new DataTable(); foreach(String strCountry in listCountries) { DataTable dtCountry = getData(strCountry); //Some function that returns a data table dtAllCountries.Merge(dtCountry); }
dtAll = dtOne.Copy(); dtAll.Merge(dtTwo,true);
参数TRUE保存更改。
有关更多详情,请参阅下面的链接。 http://msdn.microsoft.com/en-us/library/wkk7s5zk.aspx
DataTable dtAll = new DataTable(); DataTable dt= new DataTable(); foreach (int id in lst) { dt.Merge(GetDataTableByID(id)); // Get Data Methode return DataTable } dtAll = dt;
这是我为合并两个数据表而做的,并将最终结果绑定到gridview
DataTable dtTemp=new DataTable(); for (int k = 0; k < GridView2.Rows.Count; k++) { string roomno = GridView2.Rows[k].Cells[1].Text; DataTable dtx = GetRoomDetails(chk, roomno, out msg); if (dtx.Rows.Count > 0) { dtTemp.Merge(dtx); dtTemp.AcceptChanges(); } }