使用C#和LINQ比较两个大型字符串列表的最佳方法是什么?

我有一个很大的列表(~110,000个字符串),我需要将它与类似大小的列表进行比较。

列表A来自1个系统。 列表B来自SQL表(我只能读取,没有存储过程等)

找到列表A中哪些值不再存在于列表B中的最佳方法是什么?

100,000个字符串是否需要在数组中处理?

谢谢

所以你有两个这样的列表:

List listA; List listB; 

然后使用Enumerable.Except

 List except = listA.Except(listB).ToList(); 

请注意,如果您想要忽略大小写:

 List except = listA.Except(listB, StringComparer.OrdinalIgnoreCase).ToList(); 

您可以使用您选择的IEqualityComparer替换最后一个参数。

使用LINQ:

 var missing = listA.Except(listB).ToList(); 

出于兴趣,您是否必须使用List ? 因为在.net 3.5 SP1中,您可以使用HashSet和它的ExceptWith方法。 根据我的理解,HashSets专门针对两个集合之间的比较进行了优化。

 List A = //get from file List B = //get from db var C = A.Except(B); 

从这个问题中窃取,看起来你可以使用Except()方法。