当前位置:  开发笔记 > 编程语言 > 正文

包含列表太慢,如何改进?

如何解决《包含列表太慢,如何改进?》经验,为你挑选了0个好方法。

我有一个对象列表,我希望将其减少到仅包含在单独列表中的属性的对象.

List1是简单字符串的列表.

List2是包含两个字符串属性的对象列表; A和B.

应删除List1中不存在A B的所有项目.

这个过程非常依赖于时间,需要尽可能快.目前我有以下实施方案;

var List1 = new List() {"Around", "9000", "strings"}; //List of about 9000 strings
var List2 = databaseList.ToList(); //Around 2.5 million objects

var reducedList = new HashSet();            
foreach (var item in List2)
{
    if(List1.Contains(item.A) && List1.Contains(item.B))
    {
        reducedList.Add(item);
    }
}


此过程大约需要7秒钟才能完成,这对我目前的要求来说太慢了.

我尝试使用LINQ运行它,但是给出相同的结果,大约7秒.

var reducedList = List2.Where(r => List1.Contains(r.A)).Where(r => List1.Contains(r.B)).ToList();

有什么建议我可以做些什么来改善这个?

编辑: 我无法在SQL方面做到这一点,因为我需要比较的9000个字符串不能"翻译"成SQL查询,但会超过我们允许的允许2100输入参数SQL Server安装程序.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有