去除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