请教大家一个问题。我有两个listA,B,每个里面有100万以上的号码或者字符串,怎样能快速得到在A中但不在B中的数据?
我目前试了两种办法,但都不是很好。
第一种:
遍历A中的每个元素,如果不在B中,记录下来。大概需要10分钟时间。
第二种,把这些数据导入到ACCESS数据库中的两个表中。用sql语句查询
delete from A where num in (select num from B);
最后A中剩下的就是需要的。这个大概需要3分多。请问有没有更快的方法?谢谢
我目前试了两种办法,但都不是很好。
第一种:
遍历A中的每个元素,如果不在B中,记录下来。大概需要10分钟时间。
第二种,把这些数据导入到ACCESS数据库中的两个表中。用sql语句查询
delete from A where num in (select num from B);
最后A中剩下的就是需要的。这个大概需要3分多。请问有没有更快的方法?谢谢
a.Except(b),应该是最快的。
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);
具体用法如下:SELECT DataID FROM table1
EXCEPT
SELECT OldId FROM table2