比较两个DataSet,并产生增量数据

比较两个DataSet,并产生增量数据/// /// 比较两个DataSet,并产生增量数据 /// /// 原始DataSet /// 现有DataSet /// 原始DataSet和现有DataSet Tables[0]的主键 /// DataSet public DataSet CompareDataSet(DataSet oldDataSet, DataSet nowDataSet, string primaryKey) { //更新nowDataSet中的所有行,使之状态为DataRowState.UnChanged nowDataSet.AcceptChanges(); //要返回的DataSet DataSet newDataSet = new DataSet(); //设置oldDataSet 和 newDataSet Tables[0] 的主键 DataColumn dcOld = oldDataSet.Tables[0].Columns[primaryKey]; DataColumn dcNow = nowDataSet.Tables[0].Columns[primaryKey]; //设置主键 oldDataSet.Tables[0].PrimaryKey = new DataColumn[1] { dcOld }; nowDataSet.Tables[0].PrimaryKey = new DataColumn[1] { dcNow }; string primaryValue = string.Empty; string where = string.Empty; foreach (DataRow drNow in nowDataSet.Tables[0].Rows) { //每行数据中,主键列所对应的值 primaryValue = drNow[primaryKey].ToString(); where = primaryKey + " = '" + primaryValue + "'"; //在oldDataSet 中查找和主键相同的行 DataRow[] drOld = oldDataSet.Tables[0].Select(where); if (drOld.Length == 0) { drNow.SetModified(); }//说明nowDataSet中的这行数据是新增加的数据 else { for (int i = 0; i < drNow.ItemArray.Length; i++) { if (drNow.ItemArray.GetValue(i).ToString().Equals(drOld[0].ItemArray.GetValue(i).ToString()) == false) { drNow.SetModified(); break; }//说明nowDataSet中的这行数据是修改过的数据 } }//判断两行中的每一列是否相等 } //装载DataRowState为 Modified的行 newDataSet.Tables.Add(nowDataSet.Tables[0].GetChanges(DataRowState.Modified)); return newDataSet; }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值