在线请教:如何快速在两个List<T>中去掉重复数据!
我现在需要把互联网的数据列表爬取后插入到数据表中,但是之前需要判断,避免重复插入!我的思路是: 把互联网的数据保存到 List<T> lstFromWeb , 把数据表中已有数据读取到 List<T> lstFromDB
现在如何能快速把 lstFromWeb中存在而lstFromDB中不存在的Item项选出来,插入到数据表中?
在网上查了一下bloomFilter (布隆过滤器)感觉不是很会用,如果单纯的List去重是否也可以! --------------------编程问答--------------------
List<int> lstFromWeb = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
List<int> lstFromDB = new List<int> { 2, 3, 4, 7, 8 };
List<int> newList = lstFromWeb.FindAll(x => !lstFromDB.Contains(x));//得到新的list 除去在fromdb含有的数据
类似这样的方式 不知道是否可以?? --------------------编程问答-------------------- http://blog.csdn.net/yl_99/article/details/7558230 --------------------编程问答--------------------
同意! --------------------编程问答-------------------- 这效率不低么?“你爬到一个数据就到 lstFromDB 里判断一下有没有”不好么? --------------------编程问答-------------------- 总算看明白了。
你打算把采集到的数据弄到List<T> lstFromWeb
把数据表中已有数据读取到 List<T> lstFromDB
比较一下,lstFromWeb不重复的数据可以进入到数据库。
哎,这个设计太蹩脚了。 --------------------编程问答-------------------- lambda表达式
交集,并集,差集都是很简单的,一句话搞定的
不过你这个情况,数据库应该直接做的 --------------------编程问答-------------------- 用Dictionary,把两组列表放进去,如果主键有重就不放 --------------------编程问答--------------------
偷懒,在数据库中,把有重复的字段,设为主键 --------------------编程问答-------------------- 把数据放到map中Map<key,value>其中key为T的唯一id,value为T,map中的key是不会重复的,就避免重复数据了。 --------------------编程问答--------------------
确实是这个意思,并且以后数据多了,效率会很低! 你有高见吗?星星 --------------------编程问答--------------------
谢谢,正解,基本上是这个思路!有没搞笑的方法? --------------------编程问答-------------------- 讨论如何去除重复都是不正确的。
设计从根上就是错误的。
我作的CMS截止到今天,测试用的数据已经170万了,数据库18G了。
这些测试性能的数据都是通过采集功能采集过来的,如果我也用去除重复的方法,得要多大的内存,多么高科技的算法啊?
我能接受的误差是标题相同就当相同的文章,跳过采集了。
百度,谷歌采集到的网页很多内容是重复的。 --------------------编程问答-------------------- --------------------编程问答-------------------- 最近也碰到类似问题,LZ最后怎么解决? --------------------编程问答-------------------- 采集的时候去数据库找一下不行么?
为毛还要全部采集出来再去对比
--------------------编程问答-------------------- linq去重复 --------------------编程问答-------------------- 抓取数据的时候,抓到的 标题 去数据库查询如果已经存在则跳过进行下一条,如果不存在则保存
几乎所有的CMS采集信息都是这么干的,
如果按照楼主的思路 ,当数据过多的时候,首先存到list中内存可能不够了,其次N百万条数据去重比较效率很低。
补充:.NET技术 , ASP.NET