zoukankan      html  css  js  c++  java
  • 取两个DataTable的交集,删除重复数据

    /// <summary>
            /// 取两个DataTable的交集,删除重复数据
            /// </summary>
            /// <param name="sourceDataTable">源DataTable</param>
            /// <param name="targetDataTable">目标DataTable</param>
            /// <param name="primaryKey">两个表的主键</param>
            /// <returns>合并后的表</returns>
            public static DataTable Merge(DataTable sourceDataTable, DataTable targetDataTable, string primaryKey)
            {
                if (sourceDataTable != null || targetDataTable != null || !sourceDataTable.Equals(targetDataTable))
                {
                    sourceDataTable.PrimaryKey = new DataColumn[] { sourceDataTable.Columns[primaryKey] };
                    DataTable dt = targetDataTable.Copy();
                    foreach (DataRow tRow in dt.Rows)
                    {
                        //拒绝自上次调用 System.Data.DataRow.AcceptChanges() 以来对该行进行的所有更改。
                        //因为行状态为DataRowState.Deleted时无法访问ItemArray的值
                        tRow.RejectChanges();
                        //在加载数据时关闭通知、索引维护和约束。
                        sourceDataTable.BeginLoadData();
                        //查找和更新特定行。如果找不到任何匹配行,则使用给定值创建新行。
                        DataRow temp = sourceDataTable.LoadDataRow(tRow.ItemArray, true);
                        sourceDataTable.EndLoadData();
                        sourceDataTable.Rows.Remove(temp);
                    }
                }
                sourceDataTable.AcceptChanges();
                return sourceDataTable;
            }
    

      

            请尊重别人的劳动成果,让分享成为一种美德,欢迎转载。另外,文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你的脚印,欢迎评论!
  • 相关阅读:
    2018-11-28笔记
    2018-11-27笔记
    2018-11-26笔记
    DBUtils和连接池
    动态页面技术(JSP/EL/JSTL)
    会话技术Cookie&Session
    JavaEE—— HttpServletRequest
    JavaEE—— HttpServletResponse
    JavaWeb核心之Servlet
    JavaEE——HTTP协议和Tomcat服务器
  • 原文地址:https://www.cnblogs.com/likeli/p/3737023.html
Copyright © 2011-2022 走看看