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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    删除DataTable重复列,只删除其中的一列重复行的解决方法

    vs2005针对datatable已经有封装好的去重复方法:

    复制代码 代码如下:

    //去掉重复行
     DataView dv = table.DefaultView;
     table = dv.ToTable(true, new string[] { "name", "code" });

     此时table 就只有name、code无重复的两行了,如果还需要id值则

     table = dv.ToTable(true, new string[] { "id","name", "code" });//第一个参数true 启用去重复,类似distinct

    如果有一组数据(id不是唯一字段)

    复制代码 代码如下:

    id   name   code
        张三    123
        李四    456
        张三    456
       张三     123

    通过上面的方法得到

    复制代码 代码如下:

    id   name   code
        张三    123
        李四    456
        张三    456

    去重复去掉的仅仅是 id name code完全重复的行,如果想要筛选的数据仅仅是name不允许重复呢?

    复制代码 代码如下:

    table = dv.ToTable(true, new string[] { "name"});

    得到:

    复制代码 代码如下:

    name

    张三 

    李四 

    但是我想要的结果是只针对其中的一列name列 去重复,还要显示其他的列

    需要的结果是:

    复制代码 代码如下:

     id   name   code


    1    张三    123

    2    李四    456


    这个该怎么实现?下面的方法就可以,也许有更好的方法,希望大家多多指教

    复制代码 代码如下:

    #region 删除DataTable重复列,类似distinct
             /// summary>  
             /// 删除DataTable重复列,类似distinct  
             /// /summary>  
             /// param name="dt">DataTable/param>  
             /// param name="Field">字段名/param>  
             /// returns>/returns>  
             public static DataTable DeleteSameRow(DataTable dt, string Field)
             {
                 ArrayList indexList = new ArrayList();
                 // 找出待删除的行索引  
                 for (int i = 0; i dt.Rows.Count - 1; i++)
                 {
                     if (!IsContain(indexList, i))
                     {
                         for (int j = i + 1; j dt.Rows.Count; j++)
                         {
                             if (dt.Rows[i][Field].ToString() == dt.Rows[j][Field].ToString())
                             {
                                 indexList.Add(j);
                             }
                         }
                     }
                 }
                 // 根据待删除索引列表删除行  
                 for (int i = indexList.Count - 1; i >= 0; i--)
                 {
                     int index = Convert.ToInt32(indexList[i]);
                     dt.Rows.RemoveAt(index);
                 }
                 return dt;
             }

             /// summary>  
             /// 判断数组中是否存在  
             /// /summary>  
             /// param name="indexList">数组/param>  
             /// param name="index">索引/param>  
             /// returns>/returns>  
             public static bool IsContain(ArrayList indexList, int index)
             {
                 for (int i = 0; i indexList.Count; i++)
                 {
                     int tempIndex = Convert.ToInt32(indexList[i]);
                     if (tempIndex == index)
                     {
                         return true;
                     }
                 }
                 return false;
             }
             #endregion

    您可能感兴趣的文章:
    • 分享SQL Server删除重复行的6个方法
    • sqlserver利用存储过程去除重复行的sql语句
    • 删除Table表中的重复行的方法
    • SQLServe 重复行删除方法
    • 批处理 删除重复行的代码
    • 用vbscript实现从文本文件中删除所有重复行的代码
    • sql里将重复行数据合并为一行数据使用逗号进行分隔
    上一篇:Asp.net后台把脚本样式输出到head标签中节省代码冗余
    下一篇:.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法
  • 相关文章
  • 

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

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

    删除DataTable重复列,只删除其中的一列重复行的解决方法 删除,DataTable,重复,列,只,