合并2个DataTable并存储一个新的

时间:2008-11-12 21:39:34

标签: c# datatable

如果我有2个DataTables(dtOne和dtTwo),我想合并它们并将它们放在另一个DataTable(dtAll)中。我怎么能在C#中做到这一点?我在数据表上尝试了Merge语句,但是返回void。合并是否保留数据?例如,如果我这样做:

 dtOne.Merge(dtTwo);

dtOne是更改还是dtTwo更改,如果其中任何一个更改,更改是否保留?

我知道我不能这样做,因为Merge返回void,但我希望能够在dtAll中存储dtOne和dtTwo的合并:

//Will Not work, How do I do this
dtAll = dtOne.Merge(dtTwo);

4 个答案:

答案 0 :(得分:90)

Merge方法获取第二个表中的值并将它们与第一个表合并,因此第一个表现在将保存两个值。

如果要保留两个原始表,可以先复制原始表,然后合并:

dtAll = dtOne.Copy();
dtAll.Merge(dtTwo);

答案 1 :(得分:11)

dtAll = dtOne.Copy();
dtAll.Merge(dtTwo,true);

参数TRUE保留更改。

有关详细信息,请参阅MSDN

答案 2 :(得分:1)

DataTable dtAll = new DataTable();
DataTable dt= new DataTable();
foreach (int id in lst)
{
    dt.Merge(GetDataTableByID(id)); // Get Data Methode return DataTable
}
dtAll = dt;

答案 3 :(得分:0)

这是我为合并两个数据表并将最终结果绑定到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();

            }
        }