1. //去掉重复行
  2. DataView dv = table.DefaultView;
  3. table = dv.ToTable(true, new string[] { "name", "code" });
  4.  
  5. 此时table 就只有namecode无重复的两行了,如果还需要id值则
  6.  
  7. table = dv.ToTable(true, new string[] { "id","name", "code" });//第一个参数true 启用去重复,类似distinct

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

通过上面的方法得到

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

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

得到:

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

需要的结果是:

该怎么实现?下面的方法就可以,也许有更好的方法,

  1. #region 删除DataTable重复列,类似distinct
  2. /// <summary>
  3. /// 删除DataTable重复列,类似distinct
  4. /// </summary>
  5. /// <param name="dt">DataTable</param>
  6. /// <param name="Field">字段名</param>
  7. /// <returns></returns>
  8. public static DataTable DeleteSameRow(DataTable dt, string Field)
  9. {
  10. ArrayList indexList = new ArrayList();
  11. // 找出待删除的行索引
  12. for (int i = ; i < dt.Rows.Count - ; i++)
  13. {
  14. if (!IsContain(indexList, i))
  15. {
  16. for (int j = i + ; j < dt.Rows.Count; j++)
  17. {
  18. if (dt.Rows[i][Field].ToString() == dt.Rows[j][Field].ToString())
  19. {
  20. indexList.Add(j);
  21. }
  22. }
  23. }
  24. }
  25. indexList.Sort();
  26. // 排序
  27. for (int i = indexList.Count - ; i >= ; i--)// 根据待删除索引列表删除行
  28. {
  29. int index = Convert.ToInt32(indexList[i]);
  30. dt.Rows.RemoveAt(index);
  31. }
  32. return dt;
  33. }
  34.  
  35. /// <summary>
  36. /// 判断数组中是否存在
  37. /// </summary>
  38. /// <param name="indexList">数组</param>
  39. /// <param name="index">索引</param>
  40. /// <returns></returns>
  41. public static bool IsContain(ArrayList indexList, int index)
  42. {
  43. for (int i = ; i < indexList.Count; i++)
  44. {
  45. int tempIndex = Convert.ToInt32(indexList[i]);
  46. if (tempIndex == index)
  47. {
  48. return true;
  49. }
  50. }
  51. return false;
  52. }
  53. #endregion
  1. 原文:https://blog.csdn.net/qq_23502409/article/details/75269221

C# DataTable去重,根据列名去重保留其他列的更多相关文章

  1. union的特性,去重与不去重

    转载:https://blog.csdn.net/kingmax54212008/article/details/33762921 union的特性,去重与不去重 集合操作有 并,交,差 3种运算. ...

  2. C#如何将DataTable中的列名复制到另一个DataTable

    C#如何将DataTable中的列名复制到另一个DataTable? 仅复制列名,不复制列下的数据: var newDt = new DataTable(); newDt = oldDataTable ...

  3. mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型

    mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test ) null; --删除表列 alter table tes ...

  4. JS实现数组去重(重复元素保留一个)

    1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5, ...

  5. mysql数据库去重语句和不同表之间列的复制语句

    1.去重语句:DELETE FROM `v_klg_item` WHERE id NOT IN (SELECT * FROM (SELECT MAX(id) FROM `v_klg_item` GRO ...

  6. JS实现字符串去重,数组去重

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. JQuery标签去重与数组去重

    如图所示: 代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head ...

  8. MySQL 查询重复的数据,以及部分字段去重和完全去重

    1.查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vit ...

  9. javascript数组去重 js数组去重

    数组去重的方法 一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [ ...

随机推荐

  1. Flink流处理(二)- 流处理基本概念

    1. Dataflow Programming 在讨论流处理的基本概念之前,我们首先介绍一下数据流编程(dataflow programming)的基本概念与术语. 数据流图 数据流程序一般在由数据流 ...

  2. selenium定位方法-iframe元素定位方法

    在自动化测试中,如果无法定位到一个元素,那么最大的可能是定位的元素是在iframe框架中,iframe对象代表一个HTML的内联框架,在HTML中,iframe每出现一次,一个iframe对象就会被创 ...

  3. dbGet

    dbGet是Innovus/Encounter DBTCL命令的一种.除了dbGet,DBTCL的命令还包括以下几种: 1. dbSet 2. setDbGetMode/getDbGetMode 3. ...

  4. Visual Studio 配置 fftw 库

    前提条件: 1.vs 2010 +(我的是2019): 2.下载 fftw. 先将vs 的 msvc 编译器的位置添加到path,一般在下面这个目录下: Microsoft Visual Studio ...

  5. vue环境搭建及单页面标签切换实例

    复习 """ 1.指令: v-once: <p v-once>{{ msg }}</p> v-cloak: 防止页面加载抖动 v-show:绑定的 ...

  6. Win2012或Win2016安装网卡

    在电脑安装了Windows Server 2012或者2016等系统之后,可能面临的很大的问题就是没有有线或无线网卡. 1.安装网卡的功能 2.一直到“功能”这部分,选择安装“DirectPlay”和 ...

  7. 题解【洛谷P5019】[NOIP2018]铺设道路

    题目描述 春春是一名道路工程师,负责铺设一条长度为 \(n\) 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 \(n\) 块首尾相连的区域,一开始,第 \(i\) 块区域下陷的深度 ...

  8. json字符串和表相互转化中遇到的一个严重问题

    导致脚本崩溃的一个问题 Import "zm.luae" zm.Init Dim aaa="fdsf23423dsfsdf" dim 结果表=Encode.Js ...

  9. mybatis--MyBatis动态SQL语句

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...

  10. Spring 属性依赖注入

    1.1    属性依赖注入 依赖注入方式:手动装配 和 自动装配 手动装配:一般进行配置信息都采用手动 基于xml装配:构造方法.setter方法 基于注解装配: 自动装配:struts和spring ...