华域联盟 .Net 删除DataTable重复列,只删除其中的一列重复行的解决方法

删除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里将重复行数据合并为一行数据使用逗号进行分隔

本文由 华域联盟 原创撰写:华域联盟 » 删除DataTable重复列,只删除其中的一列重复行的解决方法

转载请保留出处和原文链接:https://www.cnhackhy.com/47627.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部