ADO.NET_第五篇_DataTable_04Merge

+++ 本例演示如何使用DataTable.Merge()

protected void Page_Load(object sender, EventArgs e)
{
    #region 表1
    DataTable table1 = new DataTable("Items");
    DataColumn idColumn = new DataColumn("id", typeof(System.Int32));
    DataColumn itemColumn = new DataColumn("item", typeof(System.Int32));
    table1.Columns.Add(idColumn);
    table1.Columns.Add(itemColumn);
    table1.PrimaryKey = new DataColumn[] { idColumn };
    table1.RowChanged += new System.Data.DataRowChangeEventHandler(Row_Changed);
    DataRow row;
    for (int i = 0; i <= 9; i++)
    {
        row = table1.NewRow();
        row["id"] = i;
        row["item"] = i;
        table1.Rows.Add(row);
    }
    table1.AcceptChanges();
    PrintValues(table1, "Original values");
    #endregion
    #region 表2
    DataTable table2 = table1.Clone();
    table2.Columns.Add("newColumn", typeof(System.String));
    row = table2.NewRow();
    row["id"] = 14;
    row["item"] = 774;
    row["newColumn"] = "new column 1";
    table2.Rows.Add(row);
    row = table2.NewRow();
    row["id"] = 12;
    row["item"] = 555;
    row["newColumn"] = "new column 2";
    table2.Rows.Add(row);
    row = table2.NewRow();
    row["id"] = 13;
    row["item"] = 665;
    row["newColumn"] = "new column 3";
    table2.Rows.Add(row);
    #endregion
    Response.Write("Merging");
    table1.Merge(table2, false, MissingSchemaAction.Add);
    PrintValues(table1, "Merged With table1, schema added");
}
public void Row_Changed(object sender, DataRowChangeEventArgs e)
{
    Response.Write("Row changed " + e.Action + " " + e.Row.ItemArray[0] + "</br>");
}
public void PrintValues(DataTable table, string label)
{
    Response.Write(label);
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn col in table.Columns)
        {
            Response.Write(row[col].ToString() + " ");
        }
    }
}

+++ 说明
1) 创建表1,利用表1创建表2,并向表2中增加一列,此时表1和表2的表结构不同;
2) 利用MissingSchemaAction.Add将表1和表2合并;
3) DataTable.Merge方法将指定的DataTable与当前的DataTable合并,该方法有三个重载函数:
Merge(DataTable) 将指定的DataTable与当前的DataTable合并。 
Merge(DataTable, Boolean) 将指定的DataTable与当前的DataTable合并,指示是否在当前的DataTable中保留更改。 
Merge(DataTable, Boolean, MissingSchemaAction) 将指定的DataTable与当前的DataTable合并,指示是否在当前的DataTable中保留更改以及如何处理缺失的架构。
4) 合并通常是在客户端应用程序上将数据源中最近的更改合并到现有的DataTable中,使客户端应用程序能够拥有用数据源中的最新数据刷新的DataTable。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值