请问:怎样能快速比较两个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比较快,下面的方法可能更快一些。
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);