转自:https://www.cnblogs.com/sunxi/p/4767577.html

业务需求

最近做一个把源数据库的数据批次导出到目标数据库。源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库。

其中要避免目标库插入重复数据。这重复数据可能是源数据库本身就有重复数据,还有就是已经插入避免重复插入。

过滤自身重复数据解决方案

第一种:采用DataView.ToTable()方法

DataView.ToTable 方法

.NET Framework 2.0
其根据现有 DataView 中的行,创建并返回一个新的 DataTable。
如果指定了自定义列,会根据自定义列后的数据进行去重。

重载列表

名称 说明
DataView.ToTable () 根据现有 DataView 中的行,创建并返回一个新的 DataTable

由 .NET Compact Framework 支持。

DataView.ToTable (String) 根据现有 DataView 中的行,创建并返回一个新的 DataTable

由 .NET Compact Framework 支持。

DataView.ToTable (Boolean, String[]) 根据现有 DataView 中的行,创建并返回一个新的 DataTable

由 .NET Compact Framework 支持。

DataView.ToTable (String, Boolean, String[]) 根据现有 DataView 中的行,创建并返回一个新的 DataTable

由 .NET Compact Framework 支持。

实例代码

 public static DataTable Distinct(DataTable dt, string[] filedNames){DataView dv = dt.DefaultView;DataTable DistTable = dv.ToTable("Dist", true, filedNames);return DistTable;}

第二种方法:循环遍历+DataTable.Select()

利用for循环遍历DataTable的数据行,利用DataTable.Select 方法判断是否重复,如果重复,则利用DataTable.Rows.RemoveAt(Index)删除重复的那一行。

具体看代码。

代码示例

 public DataTable GetDistinctSelf(DataTable SourceDt, string filedName){for (int i = SourceDt.Rows.Count - 2; i > 0; i--){DataRow[] rows = SourceDt.Select(string.Format("{0}='{1}'", filedName, SourceDt.Rows[i][filedName]));if (rows.Length > 1){SourceDt.Rows.RemoveAt(i);}}return SourceDt;}

第三种方法

利用双循环遍历(不推荐)

 public DataTable GetDistinctSelf(DataTable SourceDt, string filedName){for (int i = SourceDt.Rows.Count - 2; i > 0; i--){string title = SourceDt.Rows[0][filedName].ToString();for (int j = i + 1; j > 0; i--){if (SourceDt.Rows[j][filedName].ToString() == title){SourceDt.Rows.RemoveAt(i);}}}return SourceDt;}

去除DataTable重复数据的三种方法(转)相关推荐

  1. 遍历DataTable内存数据的三种方法性能对比

    http://www.cnblogs.com/guowei1027/archive/2009/12/15/1624699.html 前几年曾经碰到一个生成递归树形菜单的功能,由于系统比较庞大,有300 ...

  2. mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  3. mysql 禁止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  4. python csv库,Python 中导入csv数据的三种方法

    Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...

  5. 如何安全的在不同工程间安全地迁移asset数据?三种方法

    如何安全的在不同工程间安全地迁移asset数据?三种方法 答: 1.将Assets和Library一起迁移 2.导出包package 3.用unity自带的assets Server功能 posted ...

  6. Android 免root 备份数据,教你安卓手机免Root恢复手机数据的三种方法

    说到安卓手机,人们对它的第一印象就是开源.自由.可定制.市面上大多数系统,比如Flyme.MIUI其实都是由安卓内核再加上一层自己的包装罢了.所以你会看到手机上一堆预装软件卸载不掉,这本质上就是手机厂 ...

  7. 用旭日图展示数据的三种方法

    什么是旭日图? 旭日图(Sunburst Chart)是一种现代饼图,它超越传统的饼图和环图,能表达清晰的层级和归属关系,以父子层次结构来显示数据构成情况.旭日图中,离远点越近表示级别越高,相邻两层中 ...

  8. 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...

  9. 关于iOS去除数组中重复数据的几种方法

    在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方法 代码: NSArray *dataArr ...

  10. SQL中去除重复数据的几种方法,我一次性都告诉你​

    使用SQL对数据进行提取和分析时,我们经常会遇到数据重复的场景,需要我们对数据进行去重后分析. 以某电商公司的销售报表为例,常见的去重方法我们用到distinct 或者group by 语句, 今天介 ...

最新文章

  1. 千万级并发HAproxy均衡负载系统介绍
  2. 2020高速公路shp文件_全国按轴收费方案最终版!今天起,高速公路就按照这个标准收费...
  3. Hyper-V之02 虚拟机复制与故障转移
  4. 【NOIP】提高组2013 积木大赛
  5. Delphi 之 工具栏组件(TToolBar)
  6. 计算机系统操作工 初级,计算机系统操作工国家职业标准
  7. protel 99se 简单的手动画pcb
  8. 算法与数据结构面试题(6)-腾讯面试题
  9. 简单论坛系统数据库的设计
  10. Xcode8 官方下载地址
  11. 爱心函数可视化 python
  12. 利用平面投影坐标与经纬度粗略自动计算高斯投影坐标系参数
  13. PHP - 经典面试题大全,看这一篇就够了
  14. 1.【PPT】新建PPT文件、插入图片、插入文本框、添加形状、页面设置
  15. Completed 403 FORBIDDEN 后端解决跨域问题
  16. 仿微信评论显示更多与收起
  17. 高德 php,高德地图WEB版的使用
  18. JDOM和XPATH薛谷雨
  19. scad的oracle性质,变量选择之SCAD算法
  20. 如何做好区块链社区?得社区者得天下

热门文章

  1. 用最通俗易懂的语言告诉你什么是信息熵
  2. Android开发环境搭建-eclipse+ADT及hello world
  3. html+css如何提升,用好这20个css技巧快速提升你的CSS技能
  4. java show方法显示_Java Presence.Show方法代码示例
  5. Java学习之路 之 使用技巧篇
  6. SpringMVC返回一个JSON对象到界面
  7. 企业微信和后台管理系统的结合管理(1)---各个系统之间的关系和协同。
  8. Shiro与Spring整合
  9. python3.7 倒计时
  10. linux 下配置jdk