• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sqlserver合并DataTable并排除重复数据的通用方法分享
    代码如下:
    复制代码 代码如下:

    ///summary>
    /// 将两个列不同的DataTable合并成一个新的DataTable
    ////summary>
    ///param name="dt1">源表/param>
    ///param name="dt2">需要合并的表/param>
    ///param name="primaryKey">需要排重列表(为空不排重)/param>
    ///param name="maxRows">合并后Table的最大行数/param>
    ///returns>合并后的datatable/returns>
    public static DataTable MergeDataTable(DataTable dt1, DataTable dt2, string primaryKey, int maxRows)
    {
    //判断是否需要合并
    if (dt1 == null dt2 == null)
    {
    return null;
    }
    if (dt1 == null dt2 != null)
    {
    return dt2.Copy();
    }
    else if (dt1 != null dt2 == null)
    {
    return dt1.Copy();
    }
    //复制dt1的数据
    DataTable dt = dt1.Copy();
    //补充dt2的结构(dt1中没有的列)到dt中
    for (int i = 0; i dt2.Columns.Count; i++)
    {
    string cName = dt2.Columns[i].ColumnName;
    if (!dt.Columns.Contains(cName))
    {
    dt.Columns.Add(new DataColumn(cName));
    }
    }
    //复制dt2的数据
    if (dt2.Rows.Count > 0)
    {
    Type t = dt2.Rows[0][primaryKey].GetType();
    bool isNeedFilter = string.IsNullOrEmpty(primaryKey) ? false : true;
    bool isNeedQuotes = t.Name == "String" ? true : false;
    int mergeTableNum = dt.Rows.Count;
    for (int i = 0; i dt2.Rows.Count mergeTableNum maxRows; i++)
    {
    bool isNeedAdd = true;
    //如果需要排重时,判断是否需要添加当前行
    if (isNeedFilter)
    {
    string primaryValue = dt2.Rows[i][primaryKey].ToString();
    string fileter = primaryKey + "=" + primaryValue;
    if(isNeedQuotes)
    {
    fileter = primaryKey + "='" + primaryValue + "'";
    }
    DataRow[] drs = dt.Select(fileter);
    if (drs != null drs.Length > 0)
    {
    isNeedAdd = false;
    }
    }
    //添加数据
    if (isNeedAdd)
    {
    DataRow dr = dt.NewRow();
    for (int j = 0; j dt.Columns.Count; j++)
    {
    string cName = dt.Columns[j].ColumnName;
    if (dt2.Columns.Contains(cName))
    {
    //防止因同一字段不同类型赋值出错
    if (dt2.Rows[i][cName] != null dt2.Rows[i][cName] != DBNull.Value dt2.Rows[i][cName].ToString() != "")
    {
    dr[cName] = dt2.Rows[i][cName];
    }
    }
    }
    dt.Rows.Add(dr);
    mergeTableNum++;
    }
    }
    }
    return dt;
    }
    您可能感兴趣的文章:
    • SQL Server数据库删除数据集中重复数据实例讲解
    • Sql Server使用cursor处理重复数据过程详解
    • sqlserver清除完全重复的数据只保留重复数据中的第一条
    • SQL Server中删除重复数据的几个方法
    • sqlserver中重复数据值只取一条的sql语句
    • 教你几种在SQLServer中删除重复数据方法
    • MSSql简单查询出数据表中所有重复数据的方法
    上一篇:insert select与select into 的用法使用说明
    下一篇:利用sql函数生成不重复的订单号的代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    sqlserver合并DataTable并排除重复数据的通用方法分享 sqlserver,合并,DataTable,并,