这种计算,如何提升速度?

sdfsf343v 2012-12-17 07:02:32
List<List<string>> list1 = 100万个元素
List<string> list2 = 150个元素

将list1中每个元素和list2的每个元素比对,如果list2中的任何一个元素包含list1的元素的元素4个以上,那么,list1中的该元素则提取出来,如何计算,速度才快些啊,
目前list2是放在Access数据库中的,我试了下在数据库连接状态下读取每行进行比对,速度那叫慢得....

请大神指点...急用..
...全文
241 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
luorobber 2012-12-18
  • 打赏
  • 举报
回复
用lamda表达式应该会快很多
sdfsf343v 2012-12-18
  • 打赏
  • 举报
回复
我是先把list2从数据库提取到内存,下面是写的:

List<List<string>> list1 = 100万个元素;
List<string> list2 = 150个元素;
List<List<string>> list3 = new List<List<string>>();
foreach (List<string> list in list1)
   {
      if(list2.Any(y => list.Where(m => y.Contains(m)).Count() == 4))
         {
            list3 .Add(list);
         }  
  }
不知道哪位大哥还有没有更好的办法,提升速度空间
sdfsf343v 2012-12-18
  • 打赏
  • 举报
回复
引用 5 楼 haukwong 的回复:
引用 4 楼 sdfsf343v 的回复:引用 2 楼 yuefeng_sihu 的回复:吧list1中的具有4个或者以上的元素取出来list3,然后list2和list3比,相同就是想要的 list1中的每一个元素都具有4个以上的string。这是前提条件,无需判断 既然list1中每个元素都具有4个以上,那么可以下去掉重复再比较。 list1 = list1.D……
这位,没看清楚题吧,list1是List<List<string>>类型的
潇潇雨云 2012-12-17
  • 打赏
  • 举报
回复
分割字符串。
threenewbee 2012-12-17
  • 打赏
  • 举报
回复
数据放在access,一条一条读出来,这本身就很慢。100万数据一点也不多,直接放内存好了。
Hauk 2012-12-17
  • 打赏
  • 举报
回复
引用 4 楼 sdfsf343v 的回复:
引用 2 楼 yuefeng_sihu 的回复:吧list1中的具有4个或者以上的元素取出来list3,然后list2和list3比,相同就是想要的 list1中的每一个元素都具有4个以上的string。这是前提条件,无需判断
既然list1中每个元素都具有4个以上,那么可以下去掉重复再比较。 list1 = list1.Distinct().ToList();//distinct一下数据至少减少了3/4 然后,遍历只有150条记录的list2: for (int i = 0; i < list2.Count; i++) { if (list1.Contains(list2[i])) { list3.Add(list2[i]);//结果存在list3中 } } 这样可能就好一点。 不过速度慢应该是你数据查询的问题,而不是比较。
sdfsf343v 2012-12-17
  • 打赏
  • 举报
回复
引用 2 楼 yuefeng_sihu 的回复:
吧list1中的具有4个或者以上的元素取出来list3,然后list2和list3比,相同就是想要的
list1中的每一个元素都具有4个以上的string。这是前提条件,无需判断
yuefeng_sihu 2012-12-17
  • 打赏
  • 举报
回复
你也可以用分割字符串的方法,吧list1中所有元素取出,放到一个string,用list2中元素分割string,如果得到元素>=5,取出,(要先判断,首尾是否相等,加到string时可以每个元素后加一个空格或者其他)
yuefeng_sihu 2012-12-17
  • 打赏
  • 举报
回复
吧list1中的具有4个或者以上的元素取出来list3,然后list2和list3比,相同就是想要的
likedefly 2012-12-17
  • 打赏
  • 举报
回复
对list1分块多线程处理,使用PLinq去list2中匹配,应该有相当大的性能提升

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧