日期:2014-05-18  浏览次数:20787 次

请问:怎样能快速比较两个list数据
请教大家一个问题。我有两个listA,B,每个里面有100万以上的号码或者字符串,怎样能快速得到在A中但不在B中的数据?
我目前试了两种办法,但都不是很好。
第一种:
  遍历A中的每个元素,如果不在B中,记录下来。大概需要10分钟时间。
第二种,把这些数据导入到ACCESS数据库中的两个表中。用sql语句查询
delete from A where num in (select num from B);
最后A中剩下的就是需要的。这个大概需要3分多。

请问有没有更快的方法?谢谢

------解决方案--------------------
Linq
var reslut = A.Except(B);
------解决方案--------------------
用linq
a.Except(b),应该是最快的。
------解决方案--------------------
用linq比较快,下面的方法可能更快一些。
C# code

            HashSet<string> h1 = new HashSet<string>(A);
            HashSet<string> h2 = new HashSet<string>(B);
            List<string> list = new List<string>();
            foreach (string s in h1)
                if (!h2.Contains(s))
                    list.Add(s);