我有一个很大的列表(约 110,000个字符串),需要与一个类似大小的列表进行比较。
列表A来自1个系统。 列表B来自一个SQL表格(我只能读取,没有存储过程等)
找到在列表A中存在但在列表B中不存在的值,最好的方法是什么?
处理100,000个字符串是否太多了?
谢谢
我有一个很大的列表(约 110,000个字符串),需要与一个类似大小的列表进行比较。
列表A来自1个系统。 列表B来自一个SQL表格(我只能读取,没有存储过程等)
找到在列表A中存在但在列表B中不存在的值,最好的方法是什么?
处理100,000个字符串是否太多了?
谢谢
假设你有以下两个列表:
List<string> listA;
List<string> listB;
然后使用Enumerable.Except
方法:
List<string> except = listA.Except(listB).ToList();
请注意,如果你想忽略大小写:List<string> except = listA.Except(listB, StringComparer.OrdinalIgnoreCase).ToList();
您可以将最后一个参数替换为您选择的IEqualityComparer<string>
。
使用 LINQ:
var missing = listA.Except(listB).ToList();
想了解一下,你是否必须使用List<string>
?因为在.NET 3.5 SP1中,你可以使用HashSet和它的ExceptWith方法。据我所知,HashSets是专门为两个集合之间的比较进行了优化。
List<string> A = //get from file
List<string> B = //get from db
var C = A.Except(B);