datatable过滤HTML,去除DataTable重复数据的三种方法

去除DataTable重复数据的三种方法

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

第二种中增加变量。 string name,保存 遍历的到的 i的 name值。倒叙遍历,如果 与之相等。那么就移除 i+1的数据

业务需求

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

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

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

第一种:采用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重复数据的三种方法 相关文章

REPuter注释叶绿体重复序列

REPuter可注释叶绿体重复序列,包括4种类型,Forward(F), Reverse (R), Complement (C), Palindromic (P)。 REPuter 是可在线注释, 详情可戳参考文献、 Robert* REPuter: The Manifold Applications of Repeat Analysis on a Genomic Scale 其中重复序列

mysql left join 出现的结果会重复(转)

mysql left join 出现的结果会重复 原文: https://www.cnblogs.com/ampl/p/9081746.html left join 基本用法 MySQL left join 语句格式 A LEFT JOIN B ON 条件表达式 left join 是以A表为基础,A表即左表,B表即右表。 问题描述 左表(A)的记录会全部显示,

?LeetCode刷题实战82:删除排序链表中的重复元素 II

今天和大家聊的问题叫做 删除排序链表中的重复元素 II ,我们先来看题面: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct n

LeetCode142|移除重复节点

一,移除重复节点 1,问题描述 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 2,示例描述 示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 2

LeetCode154|删除排序数组中的重复项II

一,删除排序数组中的重复项II 1,问题简述 给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成

LeetCode153|删除排序数组中的重复项

一,删除排序数组中的重复项 1,问题简述 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 2,示例描述

sql distinct 去重复 (mysql)

DISTINCT 去重复 (运动扭伤腰。。。悲伤。。。 (▼ _ ▼) ) 首先,例如我们的表: 首先观察表: 其中第二行和第三行和第八行的name1的只是重复的,但第八行的age1确是12,与第二行和第三行不同。 第五行和第六行是相同的重复数据。 在此我们先使用如下命令

php stripslashes 去除反斜线

stripslashes可以去除反斜线,准确的说是去掉一个反斜线,因为如果是两个反斜线的话stripslashes会把两个反斜线替换成一个: 引用php手册的例子: ?php$str = Is your name O\reilly?;// 输出: Is your name Oreilly?echo stripslashes($str);?

LeetCode(1-两数之和2-两数相加3-无重复字符的最长子串)

1-两数之和 题目描述: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答案。 示

详解Notepad++去除CRLF符号

下面由 notepad 教程栏目给大家介绍Notepad++ 去除CRLF符号的方法,希望对需要的朋友有所帮助! 之前Notepad++显示的文本全变成了这样的格式,回车换行符都展示了出来 解决办法: 视图--显示符号 将显示所有符号前边的勾去掉即可,如下: 详解Notepad++去除CR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值