删除相同数据并且记录个数

问题描述

我做一个导入txt数据的程序txt里面是电话号码137822446xx139374156xx137823757xx138374892xx138374009xx159363851xx137823820xx138498657xx137823007xx135694613xx139498386xx138374348xx136298800xx139498120xx139374674xx我用遍历循环来排除时数据量小的时候没有问题当数据量大的时候运行就非常慢现在有一个txt文件有10W个电话号码我的程序就运行不了了!求一个速度快一点的排除方法!string[]arrA=File.ReadAllLines(this.tbaddress.Text.Trim());this.tbaddress.Text.Trim()文件路径for(inti=0;i<arrA.LongLength;i++){addphone1(smst,arrA[i]);}b=smst.iflistbox();

解决方案

解决方案二:
丢到数据库一个distinct
解决方案三:
通过代码优化性能是一方面,另外这样的功能,启用线程,再加进度条吧。
解决方案四:
引用楼主的回复:

addphone1(smst,arrA[i]);

读取到一个Dictionary<K,T>对象里。
解决方案五:
protectedvoidAddPhoneNoToTXT(){StreamWritersw=File.AppendText(Server.MapPath("PhoneNo.txt"));for(inti=0;i<100000;i++){sw.WriteLine("18773168000");}sw.Flush();sw.Close();}protectedvoidButton1_Click(objectsender,EventArgse){List<string>phoneNoList=newList<string>();StreamReadersr=newStreamReader(Server.MapPath("PhoneNo.txt"));while(sr.Peek()>0){phoneNoList.Add(sr.ReadLine());}sr.Close();Response.Write("合并前记录个数:"+phoneNoList.Count+"<br/>");DateTimetimeA=DateTime.Now;phoneNoList=phoneNoList.Distinct().ToList();DateTimetimeB=DateTime.Now;Response.Write("合并后记录个数:"+phoneNoList.Count+"<br/><br/>");Response.Write("合并时间:"+(timeB-timeA).ToString());}

解决方案六:
我的意思是这个txt文本中有相同的号码现在我要排除相同的号码!
解决方案七:
phoneNoList=phoneNoList.Distinct().ToList();//这句话就是去掉重复的protectedvoidButton1_Click(objectsender,EventArgse){List<string>phoneNoList=newList<string>();StreamReadersr=newStreamReader(Server.MapPath("PhoneNo.txt"));while(sr.Peek()>0){phoneNoList.Add(sr.ReadLine());}sr.Close();Response.Write("合并前记录个数:"+phoneNoList.Count+"<br/>");DateTimetimeA=DateTime.Now;phoneNoList=phoneNoList.Distinct().ToList();DateTimetimeB=DateTime.Now;Response.Write("合并后记录个数:"+phoneNoList.Count+"<br/><br/>");Response.Write("合并时间:"+(timeB-timeA).ToString());}

你只要用这个函数就好了

时间: 2024-08-04 01:03:18

删除相同数据并且记录个数的相关文章

Oracle比较快的删除重复数据的方式

  网上五花八门删除重复数据的方法就是没见过这种: DELETE FROM prod_grid_inc WHERE ROWID IN (SELECT b.row_id2 FROM (SELECT ROWID row_id2, a.*, row_number() over(PARTITION BY a.prod_id ORDER BY a.insert_date DESC) row_num FROM prod_grid_inc a) b WHERE b.row_num >= 2); 大家不妨试试,

sql删除重复数据的详细方法

  重复数据,通常有两种:一是完全重复的记录,也就是所有字段的值都一样;二是部分字段值重复的记录. 一. 删除完全重复的记录 完全重复的数据,通常是由于没有设置主键/唯一键约束导致的. 测试数据: if OBJECT_ID('duplicate_all') is not null drop table duplicate_all GO create table duplicate_all ( c1 int, c2 int, c3 varchar(100) ) GO insert into dup

sql语句中删除表数据drop、truncate和delete的用法

  虽然绿色资源网小编不建议大家去用命令删除数据库表中的东西,但是这些删除命令总有用的着的地方. 说到删除表数据的关键字,大家记得最多的可能就是delete了 然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了 现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的 老大------drop 出没场合:drop table tb --tb表示数据表的名字,下同 绝招:删除内容和定义,释放空间.简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表, 例如:一个

Excel2003/2007中删除重复数据

大家在使用Excel表格总汇大批量数据时,难免会发现一些重复行和重复数据,这时我们就应该将那些重复的数据删除,以免会影响我们的工作,在Excel中删除重复数据和重复行的方法有N多,Excel2003删除重复数据和重复行方法: 第1种情况:重复行的内容完全一致 如下图所示,第2行和第4行的内容完全相同: 操作方法: 选中表中的所有记录(注意,此时应将每列的标题行也选择上,否则筛选完的数据表中将不再包含有该标题行),执行"数据"菜单→"筛选→高级筛 选"命令;在弹出的&

Excel中轻松查找删除重复数据(Excel 2007)

  由于重复输入或粘贴等原因,Excel 2007工作表往往存在重复的数据或记录.如果工作表的规模比较大,手工查找和删除重复数据很难做到"完全彻底".不过这个问题对Excel 2007来说则是"小菜一碟",下面就为大家介绍Excel中轻松查找删除重复数据 的技巧. 1.标识重复数据 打开工作表,选中可能存在重复数据或记录的区域.单击"开始"选项卡中的"条件格式"打开菜单,在"突出显示单元格规则"子菜单下选择

快速检索 轻松查找删除重复数据

  由于重复输入或粘贴等原因,Excel 2007工作表往往存在重复的数据或记录.如果工作表的规模比较大,手工查找和删除重复数据很难做到"完全彻底".不过这个问题对Excel 2007来说则是"小菜一碟",因为它的几个新功能可以轻松解决这类问题. 1.标识重复数据 打开工作表,选中可能存在重复数据或记录的区域.单击"开始"选项卡中的"条件格式"打开菜单,在"突出显示单元格规则"子菜单下选择"重复

已经“彻底”删除的数据是怎么找回来的?

  问:为什么一些"彻底"删除的数据还可以找的回来还可以恢复呢? 答:有的朋友会感到奇怪:我明明把数据删除了,并且清空了回收站,为什么又能够找回来呢?这就得从硬盘记录数据的原理说起了:当我们向硬盘里存放文件时,操作系统首先会在硬盘的文件分配表内写上文件名称.大小,并根据数据区的空闲空间在文件分配表上继续写上文件内容在数据区的起始位置,然后开始向数据区写上文件的真实内容,这样一个文件存放操作才算完毕.而当我们删除文件时,其步骤却比建立文件要简单得多.我们执行删除操作后,系统只是在文件分配

【MySQL】删除大量数据的具体实现

ourmysql博客中提供了 <大表删除数据的思路>,对于大表依据主键删除的思路是必须的,删除几千万的数据还算是比较简单的,如果你的数据库中的表高达数百亿条记录 ,删除其中的几十亿,就需要考虑可用性的问题了.上述文中的 利用生成的文本方式有些不妥. 我的方法是利用存储过程,游标,先根据条件获取要删除的主键,然后依据主键删除,考虑到删除50亿条记录耗费将近7天的时间(事后得出),必须后台执行.使用python 工具写一个脚本,可以针对多个服务器进行并行操作. 1 在各个服务器上创建存过! del

sql 删除重复数据

sql 删除重复数据 本文章提供一款mysql删除重复数据,就是数据表中存在二条以上的重复数据,删除编号最小的一条信息. delete `borough_name` as a from fke_borough as a, ( select *,min(id) from fke_borough group by `borough_name` having count(1) > 1 ) as b  where a.`borough_name` = b.`borough_name` and a.id